Her Yıl Daha Az mı Emiyorsunuz? [kapalı]


10

Her Yıl Daha Az Emme -Jeff Atwood

Bu anlayışlı makaleye rastlamıştım. Doğrudan gönderiden alıntı

Sık sık her yıl daha az emmenin alçakgönüllü programcıların nasıl geliştiğini düşündüm. Bir yıl önce yazdığınız koddan mutsuz olmalısınız. Değilse, bu ya A) bir yılda hiçbir şey öğrenmediyseniz, B) kodunuz geliştirilemez veya C) eski kodu tekrar ziyaret etmezsiniz demektir. Bunların hepsi yazılım geliştiricileri için ölüm öpücüğüdür.

  1. Bu ne sıklıkta oluyor ya da başınıza gelmiyor?
  2. Kodlamanızda gerçek bir gelişme görmeniz ne kadar sürer? ay yıl?
  3. Hiç tekrar mı senin eski kod?
  4. Eski kodunuz sizi ne sıklıkta rahatsız ediyor? veya teknik borcunuzla ne sıklıkta uğraşmanız gerektiği.

Kesinlikle son teslim tarihini ve bu hızlı düzeltmeleri karşılamak için yapmış olabileceğimiz eski hataları n kirli kodu düzeltmek çok acı vericidir, bazı durumlarda uygulama / kodun çoğunu yeniden yazmak zorunda kalabiliriz. Bununla ilgili tartışma yok.

Karşılaştığım geliştiricilerin bazıları, kodlamalarının iyileştirmeye ihtiyaç duymadığı veya artık geliştirilemediği gelişmiş aşamada olduklarını savundu .

  • Bu olur mu?
  • Eğer öyleyse, belirli bir dili kodlamak için kaç yıl geçmesi bekleniyor?

İlişkili:

Hiç eski kod ve acı içinde bazı acı içinde geri baktın mı?

Star Wars Moment in Code "Luke! Ben sizin kodunuz!" "Hayır! İmkansız! Olamaz!"


3
Mükemmel olduklarını ve gelişmeleri gerekmediğini düşünen IMHO insanları haklı. Onlar olamaz geliştirmek. Herhangi bir mantıklı kişi asla mükemmel olamayacaklarını bilir, her zaman iyileştirme / yeni şeyler öğrenme için yer vardır. Kendimi geliştiremeyeceğimi öğrenirsem dehşete düşerim - tavanım olduğunu düşünmek istemiyorum.
MAK

Çok yeni olduğum zaman yaptığım projelere dönmeyi ve yazmam çok zor olan koda bakmayı seviyorum. Çoğu zaman kod sooo basittir. Beni kıkırdatıyor.
Muffin Man

Yanıtlar:


6
  > Sucking Less Every Year ?

Hayır ama her yıl farklı emme :-)

Yıllar önce yaptığım ilk incelemelerden sonra eksik adlandırma kuralları hakkında acı çektim.

Sonra benim kodlu (gereksiz) mümkün olduğunca genel olarak uygulandı ama bu kodu anlamak ve korumak için zor yapılan acı çekti.

Sonra testdriven geliştirme, InversionOfControl, ne nokta net jenerikleri nerede ve çok daha fazlasını öğrendim.

Sonuç

eski kötü alışkanlıkların acısı azalır ama daha fazla şey öğrendiğim için aldığım yeni acılarla telafi edildi.


19

İlginç bir şekilde, birlikte çalıştığım tüm "rockstar" programcıları son derece alçakgönüllü, öğrenmeye hevesliydi ve her şeyi bilmediklerini kabul etmeye hazırdılar. Heck, birçoğu, en azından açık yürekli anlarda, tamamen kendini beğenmişti.

Kodlarının "geliştirilemediğini" düşünen bir geliştiriciyle tanıştığımı sanmıyorum, ama bir şey bana bu adamların olabildiğince rocktar'dan olabildiğince uzak olacağını söylüyor.


2
% 100 katılıyorum. Sessiz suikastçiler! Oh ve müthiş kullanıcı adı, xkcd? :)
jamiebarrow

@ jamiebarrow: Elbette. :)
Bobby Tables

bir başka başarısızlık durumu ise "tüm yazılım kötü, tüm hack'leri, iyileştirme fikirlerinizin önemi yok" diyen kişidir. Bu tiplerle çalışmak için iç karartıcı.
Doug T.5

13

Aşağıdaki noktalar tavsiye değil, kişisel bir günlüktür:

  • daha az global değişken kullanma
  • değişkenler veya işlev adları için kısaltma kullanmayın
  • [bazı] test kodları yaz
  • karşılaştırma yapmadan kodu yavaş (veya hızlı) olarak yargılama
  • uygulamayı nasıl yükleyeceğinizi öğrenin
  • tamir etme, eğer kırılmazsa
  • bir kaynak kodu yönetim aracı kullanın (git / hg)
  • yeniden düzenleme serin, getirdiği testin maliyetini tahmin etmeyin
  • güvenlik zor, bu yüzden mümkün olduğunca erken sakının
  • bazı açık kaynaklı proje hatalarını düzeltme eki
  • yeni bir şey blog
  • kullanılabilirlik bir özellik isteği olmayabilir, ancak önemlidir

Bir yıl içinde hepsini öğrenmedim, her şey zaman alıyor ...


"Bazı test kodlarını yaz" dan bahsetmeyi seviyorum. Hiç kimsenin asla programcı olarak hata yapamayacakları mükemmelliğe ulaşmadığına inanıyorum - hepimiz insanız ve zaman zaman hata yapıyoruz. Birim testleri ve entegrasyon testleri hatalarımızı azaltabilir. Ve 'bazı' testler dediğini fark ettim, bu önemlidir, çünkü bazen gerçekten yararlı olmayan yazma testleri yaptırdım.
jamiebarrow

Aslında, "
düzelmezse kırmayın

2
Birkaç tane ekleyebilir miyim? Bir API ise, gerekenden daha fazla dahili ayrıntı göstermeyin, eğer gizlerseniz daha sonra değiştirebilirsiniz. Sabit sayıları her zaman sihirli sayılar yerine kullanın çünkü belgelendirmek ve değiştirmek daha kolaydır. Değişmezlik, özellikle eşzamanlılık söz konusu olduğunda, son derece yararlıdır. Başkasının kod temeli üzerinde çalışın, başka birisine haklı çıkarmanız gerektiğinde kendi kodlama stilinizi yargılamak son derece değerli bir süreçtir. Spesifikasyonu dondurun (mümkünse) çünkü hareketli bir hedefe ulaşmak daha zordur.
Evan Plaice

Yerinde veya istemciler etrafında çalışıyorsanız, yetki ve yüksek güç kartlarınızı paketleyin. Spesifikasyonun dışında bir şey değiştirmenizi isterse, daha yüksek güç kartını (tercihen istekleri üstlenebilecek bir PM ofisi) takip eden (yetki yok) yetkisiz kartı çekin. En iyi durumda, kalkınma odaklanmak için size ücretsiz olacak; en kötü durumda, sürekli sürüş özelliği isteklerinin sayısını azaltacaktır. (tartışmalı) Erken dönün ve sık sık dönün, eğer bir kod bloğunun sonunda dönüş olsaydı, bunun için bir anahtar kelime olmazdı. Umarım, her yıl daha az emmeye devam ediyorum.
Evan Plaice

4

Çoğu zaman insanlar iyi kodun aniden gerçekleştiğini düşünür, ancak çoğumuz için sadece ölümlüler kod tabanımızda iyi kodlar büyür. Demek istediğim, gereksinimler sürekli değiştiğinden ve mükemmel programcılar olmadığımız için mükemmel bir yazılım parçasını baştan yazmak çok zordur. Sonra her gereksinimi değiştirmek eski kodu bazılarını daha iyi koda yeniden (ve bunun için ödenecek!) Yeniden refactor için iyi bir fırsat görmek ve biraz teknik borç ödemek. Dedikleri gibi: "her kod işlediğinizde kod deposunu biraz daha iyi bırakın". Böylece sisteminiz ideale daha yakın bir sisteme dönüşecektir.

Yazılımından gurur duyan hiçbir programcı bilmiyorum ama bu iyi. Daha sonra programcı bu süreçte öğrendiği anlamına gelir.

Ayrıca "Temiz Kod" kitabını okuduysanız, o zaman kendi kod "emmek faktörü" birkaç kez artacaktır. : D


1
Sana bir noktada katılmıyorum, gurur duyabileceğin bazı kodlara inanıyorum. İronik olan şey, bir projenin son derece iyi gitmesi ve bununla gurur duymanız, belki de küçük sıkıntılarla. Sonra bir sonraki proje, saatte WTF'leriniz yüksek ... kendi kodunuz için! : D
jamiebarrow

1
Belki şu an bulunduğunuz adıma bağlıdır. Şimdi bir yıl önce yazdığım kodu buluyorum ve hatta bazı isimleri veya bazı yöntemlerin amacını anlamakta zorlanıyorum. Ayrıca testler ve bunun gibi şeyler tarafından ortaya çıkarılan kodu buluyorum. Gelişmeye devam ederken, bunun gibi şeyler normdan ziyade istisna olma eğilimindedir ve daha önce önemsiz gibi görünen sorunlara utanmaya başlıyorum ...
Rafa de Castro

Temiz kod için +1 olsa da, karşılaştırma her zaman kendinizle.
Aditya P

4

Bunun için madalyonun her iki tarafı da var.

Bir yandan, eski koda bakıyorsunuz ve o zamanlar bilmediğiniz tekniklerden ve dil özelliklerinden yararlanarak elde edilen şeyleri yapmanın hatalarla ve karmaşık yollarla dolu olduğunu görüyorsunuz.

Öte yandan, bir soruna özellikle zarif bir çözüm buluyorsunuz ve o zamanlar ne kadar akıllı olduğunuza dair kendini beğenmiş bir sırıtış bırakmanıza yardımcı olamazsınız.

Ve sonra C'de GOTO kullandığınız gerçeğinde dehşet içinde birkaç çizgi ve yüz buruşturma kaydırırsınız.


3

Hmm ... Eski kodumun ne kadar iyi olduğu konusunda sık sık hoş bir sürprizim var.

Bugün yapsaydım, sık sık farklı yazardım, ama zamanın sınırlamaları ile yaşamak zorunda kalsaydım, yapacağımdan emin değilim. En az birkaç gig RAM'e sahip tipik bir makineye güvenebileceğinizde, kodunuzu büyük bir sabit sürücünün 100 megabayttan biraz farklı yazabilirsiniz (ve genellikle yazmalısınız).


3
  1. Bu ne sıklıkta oluyor ya da başınıza gelmiyor?

  2. Kodlamanızda gerçek bir gelişme görmeniz ne kadar sürer? ay yıl?

  3. Hiç eski kodunuzu tekrar ziyaret ettiniz mi?

  4. Eski kodunuz sizi ne sıklıkta rahatsız ediyor? veya teknik borcunuzla ne sıklıkta uğraşmanız gerektiği.

  1. Ne zaman yeni bir şey öğrensem, umarım bu her gün olur.

  2. Eğer öğrendiklerimi uygularsam, o zaman uyguladığım andan itibaren.

  3. Evet, sadece (1) Yeni özellikler, (2) Hata düzeltmeleri, (3) Nostalji, (4) Bir şeyi nasıl çözdüğümü görün, faydalı olabilir.

  4. 1 ile ilgili olarak, daha iyi bir şey yapmayı öğrendiğimde, bazı eski projelerin daha iyi yapılabileceğinin farkındayım. Onları bırakıyorum. Bir sonraki projenin daha iyi bir şekilde yapıldığından emin olun. Endişelenmeyin sürece gerçek bir hata.


3

Başka bir soruda , konu kendi kodunuzun kalitesini değerlendirmenin yolları hakkındaydı. Önerilerimden biri, deneyiminizin kodun yazıldığı zamandan çok daha yüksek olduğu birkaç yıl içinde incelemekti. Bu soruya cevabımın bir alıntısı doğrudan sorunuzla ilgilidir:

"benim durumumda, ömür bir yıl: altı ay önce yazdığım kodu değiştirebileceğim anlamına geliyor, ancak kod iki yıl önce yazılmışsa, atılma, daha sonra tamamen yeniden yazma şansı var, çünkü sadece çok berbat. "

Yani evet, pratikte, yazdığım her kod parçası bir yıl içinde benim bakış açımdan dayanılmaz hale geliyor. Ve atma kodundan bahsetmiyorum, aynı zamanda kalite, sürdürülebilirlik ve okunabilirlik ile yazdığım koddan da bahsediyorum. Şu an için hiçbir istisna yoktu.

Ömrü ile ilgili ikinci sorunuza cevap vermek çok farklı. Bir atma kod parçasının ömrü sıfır saniyedir : yazdıktan hemen sonra berbat, ama önemli değil. Yazdığım kod bazı parçaları katlanılabilir iki yıl sonra üstlenmeden biraz StyleCop kuralları vb ortalama, benim kesin durumda ömrü değişir ait uygulayan: bazı kozmetik değişiklikler, ancak gerektiğinde sekiz ay ile bir yıl arasında boyunca C # ve PHP için iki altı ay arasında.

Eski kodumu tekrar ziyaret edebilir miyim? Evet, elbette, her geliştirici gibi, KURU umurumda değil ve kendi tekerleğinizi tekrar tekrar icat etmedikçe. Birçok projede kullandığınız ortak bir kod tabanına sahipseniz, kodu sık sık gözden geçirme ve geliştirme şansı da vardır . Başka bir nokta, büyük projeler üzerinde çalışıyorsanız, bazılarının yıllarca sürebileceği , bu nedenle eski kodu tekrar gözden geçirmeniz gerekeceği.

Karşılaştığım geliştiricilerin bazıları, kodlamalarının iyileştirmeye ihtiyaç duymadığı veya artık geliştirilemediği gelişmiş aşamada olduklarını savundu.

Bir kişi o kadar mükemmel olduğunu söylediğinde, hiçbir şey öğrenmesi gerekmiyor, bu onun ne kadar aptal olduğunu anlayamayacağı anlamına geliyor.

Bilgisayarlarda / programlamada yirmi yıllık deneyiminiz olsa bile, işler çok hızlı değişir, bu nedenle her zaman öğrenilecek yeni şeyler ve kodu geliştirmek için yeni teknikler vardır. Örneğin, .NET Framework 3.0 olmadığında yazılmış bir C # kodu, bugün sahip olduğumuz yeni şeylerle (Linq, Kod sözleşmeleri vb. Dahil) çok daha okunabilir ve daha iyi hale getirilebilir ve bu, eski kod olsa bile en akıllı geliştirici tarafından yazıldı.


Bu daha sormak gibi daha iyi kod yazma bilmiyorum biri gibi görünme riski altındadır gibi.
Aditya P

@AdityaGameProgrammer: Buggy, çirkin kod ve iyi kod arasında bir yıl veya daha kısa bir süre sonra daha zarif bir şekilde yazılabilecek bir fark var. (1.) Kimse sonsuza dek mükemmel kalacak mükemmel kod yazamaz, bu yüzden kodumuzun zaman içinde geliştirilebileceğini itiraf etmeliyiz. (2.) Zaman içinde tecrübe ve bilgi kazanırız ki bu eski kodun iyileştirilmesi için de kaynaktır.
Arseni Mourzenko

1

Kod bakarak ve "Bunu yazarken ne düşünüyordum?" Diye merak ettiğimde oldukça düzenli oluyor.

Kodun düzenlenmesi, kodun şekillendirilmesi veya başka bir şeyin bana geleceği için bazen yeni bir fikir olduğu ve genellikle büyük bir gelişme olmamasına rağmen, her küçük şey yapmaya değer olabilir.

Çalışma ortamına bağlı olarak, birkaç yıl önce aynı kod tabanında çalışmaya devam ettiğim ve orada ne olduğunu ve yönetilecek bir şey olduğunu bildiğim için kod görüyor olabilirim.

Eski kod neredeyse her zaman beni rahatsız ediyor çünkü genellikle varolan bir sistemi değiştiriyorum ya da sistemi değiştiriyorum. Her iki durumda da, mevcut sistemin tuhaflıklarını yeni sistemde var olduklarından emin olmak için bilmek zorundayım.

Jon Skeet gibi sadece mükemmel kodu düşünebilecek olanlar olduğundan emin olsam da, çoğu insan kodlarının geliştirilemeyeceğini söyleyen bir ego noktasından çekici olamayacağını söylüyor. Aynı zamanda, her seferinde büyük bir gelişme bulma açısından her zaman böyle olmayacaktır.


1

1.Bu size ne sıklıkla olur veya olmaz?

Eski kodumdan ne kadar sık ​​sık mutsuzum? Neredeyse her zaman. Gerçekten gurur duyduğum kodlarımın olduğu nadir istisnalar var ... ama yine de nadirdirler. Bana birkaç yıl önce yazdığım kodun iyi olduğu söylendi ... Ben de “yazdığım çöplerden daha kötü gördüğünüz için fakir fakir bir insan” diye düşündüm.

2.Kodlama işleminizde gerçek bir gelişme görmeden ne kadar süre önce? ay yıl?

Genellikle aşamalar halinde ... Gerçekten bir stile veya metodolojiye giriyorum (örneğin akıcı arayüzler alıyorum ... büyük bir ıslak stilime sahip olduğum son stil olduğu için) ve bir ya da dört ay boyunca yazdığım her şeyi kasap . Sonra daha iyi görünmeye başlar.

Eski kodunuzu tekrar ziyaret ettiniz mi?

İstediğim kadar sık ​​değil. Eski kodumun çoğu eski işverenlere ait. Kişisel kod çok sık beyaz yıkanır.

Eski kodunuz sizi ne sıklıkta rahatsız ediyor? veya teknik borcunuzla ne sıklıkta uğraşmanız gerektiği.

Önceki işverenlerin eski kodumun çoğuna sahip olması ve kişisel kodumun çoğunu beyaz olarak yıkamak ... çok sık değil.


beyaz yıkama = tekrar faktör? bir proje kodundan mı yoksa kişisel kod tabanınızdan mı bahsediyorsunuz?
Aditya P

1
@AdityaGameProgrammer: Beyaz yıkama = hepsini at ve en baştan yeniden yaz. Kişisel kodumdan bahsediyorum.
Steven Evers
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.