Code Complete'in hangi bölümleri zaman testine girmedi? [kapalı]


14

Rafta Code Complete'a bakıyordum, "Efsanevi Adam Ayı Dışında, bu, zamanın testine dayanacak birkaç kitle pazarı Yazılım Mühendisliği kitabından biri olabilir." Bu nedenle, tekrar okumak için atlamayı düşünüyorum.

Merak ediyorum - son zamanlarda başka biri ikinci bir bakış attı mı? Öyleyse, çok yanlış yaptığı bir şey gördün mü?

Bu bir saldırı değil, kitap incelemesi için bir talep değil - yıllar içinde hangi fikirlerin değiştiğiyle daha fazla ilgileniyorum.

Ve lütfen - "Demarco / Spewak / Zachman zamanın testini yaptı ..." hakkında yorum yok, özellikle kapladığı zeminin genişliği ve tarladaki etkisinin genişliği nedeniyle Code Complete ile ilgileniyorum.


1
Metnin hızlı bir şekilde yeniden incelenmesi, metnin örneklerle çeliştiği görünen rahatsızlıkları hatırlattı ve kitabın farklı bölümleri farklı şeyler önerdi. Bunun dışında hala oldukça iyi görünüyor.
Izkata

@Izkata - örnekler?
MathAttack

Yanıt olarak eklendi
Izkata

1
Güzel soru, son zamanlarda kendimi tekrar okumayı isteyip istemediğimi düşünüyordum. Acaba yeni bir baskı planı var mı?
Antonio2011a

2
Geçen yaz Code Complete (2nd Edition) okudum ve orada hiçbir şey modası geçmiş değildi. Yazılım geliştirmede beklenmedik radikal değişiklikler olmayacaksa, bu kitabı en az beş yıl sonra tavsiye etmekten kendimi güvende hissedeceğim.
gnat

Yanıtlar:


11

Kod Tamamlama, aşağıdakiler gibi birçok zamansız kavramı kapsar:

  • güçlü uyum
  • gevşek bağlantı
  • iyi rutin isimler
  • defansif programlama
  • kendi kendini belgeleyen kod
  • yazılım yorumları
  • birim testi

Bugün kesinlikle alakalı olan

CC'de savunulan bazı kavramlar artık daha yeni dillerde sözdizimsel olarak uygulanmaktadır, örneğin C #, alt kapsamlardaki değişkenin, süper kapsamlı bir tanımı gizleyecek şekilde tanımlanmasına izin vermez.

Değişken isimleri için Macarca gösterimi gibi diğer kavramlar ana akım programlamanın yolunda düşmüştür (yine de Win32 API ile çalışan herkes şiddetle canlı ve iyi olduklarını iddia edecektir). Bununla birlikte, değişken adlandırma kuralının ardındaki gerçek kavram, gerekli anlamı iletmek ve kodu açıklığa kavuşturmaktır, tartışacağım kavramlar da zamansızdır.

Tüm söyledi, ne hatırlamak (ve benim saygıdeğer CC benim kopya içinde hızlı bir göz), kesinlikle gözden değer olduğunu söyleyebilirim.

Bununla birlikte, bunun Efsanevi Adam Ayının gerçekten zamansız doğasına yükseldiğini sanmıyorum. MMM işi kimin yaptığını, nasıl ve neden yaptığını; (insan) iletişimin maliyetleri ve karmaşıklığı. MMM yaptığımız her şey için temel olan sorunları ele alır. CC, karşılaştırıldığında, bunu nasıl yaptığımızla ilgili pratik ve pragmatik konulara odaklanmaktadır. Başka bir deyişle, bir proje planlananın arkasındaysa ve bir yönetici ekibe 100 kişi eklemeye karar verirse, anlaşılır kod yazmak gerçekten bir fark yaratmaz.

CC, sektörümüzü rahatsız eden önemli sorunları gerçekten ele almıyor; ancak çoğu zaman imkansız bir durumda en iyi sonucu elde etmek için iyi bir temel sağlar.

Kesinlikle her ikisinin de yazılım geliştirmeye önem veren herkesin okuması gerektiğini düşünürdüm; ve her tazeye ihtiyacınız olduğunda MM'yi tekrar okumanızı tavsiye ederim. Bir geliştirme ekibine liderlik ediyorsanız, grup standartları belirlerseniz veya yeni geliştiricileri eğitiyorsanız CC tekrar okumaya değer; bunun dışında, kişisel olarak malzemeyi uzun zaman önce CC'de içselleştirdiğimi ve günlük olarak uyguladığımı fark ettim.

Yardımcı olan umutlar. Onlar kesinlikle benim favorilerimden ikisi.


Belki de MM için benzer bir Q oluşturmalıyım. Belki de bir yönetim kitabı yazdığı için Brooks daha kolaydı.
MathAttack

CC bölüm 33: Kişisel Karakter'deki "işi kim yapıyor" konusuna değinmiyor mu?
mg1075

4

Genel olarak, kitap hala iyidir. Ancak, bununla ilgili birkaç küçük sorunum var:

  • Bölüm 17'de ("Olağandışı Kontrol Yapıları") koruma ifadelerinden erken bir işlevden dönüyor olarak bahsedilmektedir, ancak "if" ifadelerinde Bölüm 15'te verilen örnekler koruma ifadelerine karşı tavsiyede bulunmaktadır . (Nöbet cümleleri / kitaptaki erken iadeler)
  • Bölüm 14.2'deki örnek kendisiyle çelişmektedir. İlk olarak "kötü" kodun bir örneğini ve nasıl "iyi" hale getirileceğini verir. Daha sonra, ilgili ifadeleri veriler veya görev benzerliği ile gruplandırırken "iyi" olacağını belirtir. Bu durumda "kötü" örnek de "iyi" olarak düşünülmelidir - ve bence, "iyi" örnekten çok daha kolay okunur çünkü tüm veriler aynı oranda hesaplanıyor - kafanızda daha az durum var .
  • Bölüm 23, Hata ayıklama, burada yazdırma ifadeleri bir madde işaretiyle kapatılır. Ben tek araç olmamalı kabul ederken, onlar hata oluştuğu kod aralığını azaltmak için son derece yararlıdır. Verilerin aniden beklediğiniz gibi olmadığını görmek için birkaç tane serpin, çalıştığınız koda bağlı olarak hata ayıklama için iyi bir başlangıç ​​noktası sağlar.

İşlev argümanlarını içeren başka bir belirsiz anım var, ama şu anda bulamıyorum. Başka bir kitap olabilirdi.


6
Evet, o zaman basılı ifadeler konusunda yanılmıştı ve şimdi hala yanlış. Bilinmeyen bir yerde bir hata ile karşı karşıya kaldığında, baskılar ve günlükler genellikle benim seçim aracıdır.
Loren Pechtel
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.