Çok fazla endişelenmek zorunda kalmayacak kadar şanslı mıydım, yoksa kötü bir programcı mıyım?
Gereksinimlerinizi önemsiyor musunuz? Performans bir gereklilik değilse, endişelenmeyin. Bunun üzerinde önemli bir zaman harcamak, işvereninizin kötüye kullanılmasıdır.
Bir dereceye kadar performans her zaman bir gerekliliktir. Düşünmeden vurabilirsen, düşünmemeye haklısın.
Şahsen, testlerimin uzun sürmesi uzun sürdüğü zaman, çoğunlukla performanstan etkileniyorum. Bir test seti geçerken 5 dakika beklemek için sabırsızlanıyorum. Ancak bu genellikle testlerle uğraşarak çözülür.
Sorum şu ki, çok sayıda programcının bu kadar umursadığı neden? Gerçekten çoğu geliştirici için bir sorun mu var?
Ne kadar önem verdikleri konusunda haklı olan çok sayıda programcı var. Olmayan çok sayıda var. Kim olmayanlar hakkında konuşalım.
Programcıların okulda öğrendikleri ilk şeylerden biri, bir şeylerin gerçekten çalışmasını sağladıktan sonra, büyük O gösterimidir. Birçoğu, dersi düzgün bir şekilde öğrenir ve bu nedenle n'nin dramatik olarak etkilediği şeylere odaklanır. Diğerleri matematiği almaz ve yalnızca işe yaradığında hızlı olması gereken dersi alır. Daha da kötüsü, bu öğrencilerin bazıları, çalışmasını sağlamak ve hızlı çalışmasını sağlamakla birlikte, kodunuzla yapılması gerekenler hakkında hiçbir şey öğrenmez. Kaçırılan dersler: okunabilir hale getirin, iyi tasarlayın, sebepsiz yere oynamayın.
Knuth haklıydı: erken optimizasyon tüm kötülüklerin köküdür. Fakat işe yaradığında bir sonraki adım nedir? Hızlı değil mi? HAYIR! Bir sonraki adım okunabilir. Okunabilir, ilk, sonraki, orta ve son adımdır. Gereksiz performans optimizasyonları yaparken bulduğum insanların çoğu otobüsün altında okunabilirlik atıyor.
Hatta bazıları kodlarının okunaksız olmasından sapık bir heyecan duyuyorlar. Başkaları tarafından oluşturulan kodu anlamak için çok uğraşmak zorunda kaldılar, bu yüzden artık geri dönüşleri sırayla.
Bunu biliyorum çünkü bunu yapardım. Bir zamanlar yapılamaz bir satır boolean ifade yapılamazsa ve bu kadar küçük ve korkutucu bir şey yaratabildiğim için etkilemek için beklediğim profesöre gururla gönderirseniz, mükemmel bir şekilde okunabilir 5 satır yeniden kırdım. Umduğum övgüyü alamadım.
Kod okunabilir kalırsa, daha sonra hızlı yapmak kolaydır. Bu yüzden Knuth, “gereksiz” olmayan “erken” vurguyu vurgulamaktadır. Çünkü tabi ki daha hızlı iyidir. Ama daha iyisi, bunun için feda ettiğinize bağlı olarak daha iyidir. Bu yüzden, gerçekten fedakarlık yapmadan önce hangi performansın gerekli olduğunu öğrenene kadar bekleyin. Okunabilirliği gönülsüzce feda edin çünkü bir kez gittiğinde geri dönmek zordur.
Okunabilirliğin ötesinde, yazılım tasarımının bütün dünyasıdır. Bu site neyle ilgili. Bazılarının tasarım kadarıyla ne yapılacağına dair hiçbir fikri yoktur. Bu yüzden, tasarımları etkileyemedikleri için çözülemez bir karışıklık yaratırlar, böylece insanlar hiçbir ipucu olmadığını söyleyemezler. Hiç kimse kodunu düzelttiği için iyi bir kod olmalı mı?
Bazıları için performans, istediklerini yapmak için tüm bahaneleri yakalamaktır. Programcılar çok fazla güç ve özerkliğe sahiptir. Onlara güven verilmiştir. Güveni kötüye kullanma.