Tasarım yoluyla bir programlama dili “temiz kod” uygulayabilir mi? [kapalı]


19

Bu yüzden ilk projelerimi C ++ ile kodluyorum ve sadece çalışmak yerine kodu "temiz" hale getirmek için daha fazla çaba gerektiriyor gibi görünüyor. Yani C ++ "çirkin ama çalışma kodu yazmak için izin verir" gibi görünüyor.

Beni düşündüren,

Bir programlama dili temiz kodu tasarım gereği uygulayabilir mi? Zaten böyle diller var mı?

Ayrıca, bu, dil gelişimi / teorisinin programlanmasında tasarım ilkeleri olarak nasıl dahil edilir? Ne tür önlemler kullanılıyor?


14
Birçok dil denedi. Bence hiçbiri uzaktan başarılı olamadı.
Robot Gort

5
Ne yazık ki bu tamamen fikir temelli çünkü “temiz kod” un objektif bir tanımı yok. Yine de sohbet odamızda tartışmaktan çekinmeyin , eminim orada herkesin paylaşacağı bazı görüşler olacak.
Ixrec

9
Hayır, FORTRAN'ı herhangi bir dilde yazabilirsiniz.
whatsisname

4
Bir dili aptalca kanıtlamanın mümkün olup olmadığını soruyorsun. Dedikleri gibi, aptallar ustaca .
Robot Gort

2
Bu sorunun amaçları için "temiz kod" hangi özelliklere sahiptir? Bunu tanımlamanız gerekir, aksi takdirde herhangi bir gerekçe ile verilen herhangi bir cevap geçerli olabilir.
Theodoros Chatzigiannakis

Yanıtlar:


20

Dil tasarımının "temiz kod" üzerindeki ana etkisi sözdizimsel düzeydedir. Çok sayıda stenografi ve belirsiz operatör (Perl / APL) olan diller kendilerini "kirli" koda verirken, daha küçük bir eleman grubuna (Python) sahip diller daha temiz koda borç verir.

Anlambilim çok farklı bir hayvandır. Bir dilin anlambiliminin temiz bir şekilde kullanıldığını zorlamanın bir yolu yoktur, özellikle de derleyici olarak dil kullanıcısının ne yapmaya çalıştığını bilemezsiniz. Güçlü bir araç basitçe budur - iyi ya da hasta için güçlü bir araç.

Günün sonunda anlambilim sözdiziminden daha önemlidir. Aynı zamanda bir bakım geliştiricisi olarak anlaşılması en zor olan kısımdır (örneğin, "bu kod aslında ne anlama geliyor? Ne anlama geldiğini görüyorum ...").

Sonuç olarak, temiz kodu uygulamak için bir tasarım olmadığını söyleyebilirim, ancak daha kolay hale getiren temiz semantik ile basit sözdizimi yazabilirsiniz. Daha iyisi ya da daha kötüsü, temiz kod öncelikle geliştirici bilgisi, motivasyonu, disiplini ve becerisi meselesidir.


2
Yazı sisteminin doğru semantiği uygulamak için uzun bir yol kat edebileceğini söyleyebilirim. Örneğin, güçlü bir şekilde yazılmış diller, değişkenlere geçerli türlerin değerlerinin atanmasını sağlar. Türleri ucuz ve kolay hale getiren bir dil, türlerde daha fazla anlambilim kodlamayı teşvik eder. Güçlü yazılan bir dil, programcıların tür dönüştürme konusunda niyetlerini ifade etmelerini sağlar. Anlambilimi kazan plakasıyla gizleyen bir dil de anlambilim hakkında akıl yürütmeyi zorlaştırır. Şimdi "temiz" anlambilimin ne olduğu belli değil. Ama doğru anlambilimiyle önemli bir örtüşmesi olduğunu düşünürdüm.
Monica'yı

7

Diller, programcıları, temiz kod tanımının bir parçası olan belirli hata sınıflarını ele almaya zorlayabilir veya teşvik edebilir. Örneğin, çeşitli diller nispeten iyi bir adresleme işi yapar:

  • Boş gösterici istisnaları.
  • Paylaşılan durum hataları.
  • Eşzamanlılık sorunları.
  • İşaretlenmeyen istisnalar.

Bununla birlikte, bu sizi sadece o yolun bir parçası haline getirir, çünkü temiz kod öncelikle insandan insana iletişim ile ilgilidir. Programlama dillerinde buna yardımcı olacak tek bir kol vardır ve bu onların etkileyici gücüdür . Bu tanımlanması gerçekten zor bir terimdir, ancak temel olarak iyi programcıların daha anlamlı dillerde daha temiz kod yazmaları daha kolaydır. Diğer insanlarla iyi iletişim kuran bir algoritmayı kolayca ifade etmek için daha fazla araca sahiptirler. Beni yanlış anlamayın, ( neredeyse ) herhangi bir programlama dilinde temiz kod yazabilirsiniz . Sadece bazı diller bunu kolaylaştırır ve daha iyi bir göreceli sonuç verir.

Ancak, sadece ifadeyi çeviremezsiniz ve sihirli bir şekilde insanlar daha iyi kod yazmaya başlayacaktır. Çoğu programcıya, dillerinde dönmeleri için onlara daha fazla düğme verirsiniz ve bunları nasıl doğru kullanacaklarını bilmezler, böylece kodları gerçekten daha kötü sonuçlanır. Kod kalitenizi artırmak için disiplin ve iyi rehberlik gerekir. Gümüş mermi yok.


6

Bir dereceye kadar. Birçok dil, dil tasarımcılarının ideallerine göre bazı temiz kod biçimlerini teşvik etmek için kasten tasarlanmıştır. Herhangi bir dilde çirkin ve anlaşılmaz kod yazmak kesinlikle mümkündür, ancak bazı diller onu caydırmak için daha fazla çaba gösterir.

Örnek olarak Python sizi dilin anlamsal yapısına göre blokları girintilemeye zorlarken, diğer birçok dil tamamen rastgele girintili girintili girmenize izin verir. Bu, belirli bir temizlik idealini aktif olarak teşvik eden bir dile örnektir.


3

Nicelleştirebiliyorsanız, onu optimize edebilecek bir dil oluşturabilirsiniz.

Aslında bir "temiz kod" politikası uygulayan belirli bir dil bilmiyorum, ancak yapı üzerinde çalışan stil polisler oldukça yaygındır.

Bunun dile dönüştürülmekten ayrı bir adım olmasının ana nedeni büyük ölçüde önceliklerin bir fonksiyonudur. Programcıların en geniş düzeyde benimsenmesini sağlamak için en fazla esnekliği sağlamak bir programlama dilinin yararınadır. O kadar çok farklı programlama dili ve DSL var ki, kullanıcı girişinin yapay olarak kısıtlanmasına ve hangi girdilere izin verildiğine dair düşünülerek yapay olarak kısıtlanmasının daha geniş bir şekilde benimsenmesine yol açacağı düşünülüyor.

Örneğin, insanları yazmaya zorlamak C # 'ın yararına değildir

if (condition)
{

onun yerine

if (condition) {

Ama stil dama olabilir o yapmaları tasarlandıkları şeyi çünkü bir Picky inançtı.

Yani, soruyu cevaplamak için

Can bir programlama dili tasarımı ile temiz kod zorlamak?

benimkini vurgula

Kesinlikle, sürece "temiz kod" ne için güçlü bir tanım sağlar.

Örneğin, "temiz kod" tanımlamak için:

  • satır uzunluğu 80 karakterden fazla değil
  • 100 satırdan fazla olmayan fonksiyonlar
  • girinti iki boşluk olmalıdır
  • açık kıvırcık ayraçlar çizginin sonunda tam olarak bir boşluk gelmelidir
  • hat başına ikiden fazla operatör yok

ve bu sözleşmelerin bazılarına veya tümüne katılmıyorsunuz, ancak günün sonunda bunlar ölçülebilir ve programlı olarak uygulanabilir.


1

Hayır, tarif ettiğin anlamda değil. "Çirkinliği" tespit etmek otomatik olarak yapılamaz!

Ancak, dil tasarımcıları iyi kodu teşvik etmek için şeyler yapabilir (bazen "temiz" demek istemiyorum çünkü bazen iyi, güvenli kod da uzun ve "çirkin"). Örneğin, Rust dilinin tasarımcıları, disiplinli C ++ programcılarının yapma eğiliminde olan şeylere baktı (yığın tahsis edilmiş değerlere tek bir "sahip" vermek gibi) ve bu şeylerden bazılarını kolaylaştırdı. Bu, bazı yaygın hatalar yapmadığınızı kontrol etmek için kullanabileceğiniz bir daktilo sağlamayı da içerir.

İyi dil tasarımının genellikle reaktif olduğunu söyleyebilirim: tasarımcılar iyi programcıların ne yaptığını inceler ve bunu daha kolay ve "daha güzel" yapmaya çalışırlar.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.