it-swarm.asia

Programlamada zararlı ayarlamalar

Sadece merak ediyorum, programlamada ne tür cazipliklerin projelerinizde gerçekten zararlı olduğu ortaya çıktı?

Gerçekten bir şey yapma dürtüsünü hissettiğinizde ve bunun projeye fayda sağlayacağına inandığınızda ya da başka bir şey olduğuna inanmak için kendinizi kandığınızda ve bir hafta sonra herhangi bir sorunu çözmediğinizi fark ettiğinizde gerçek sorunlar yerine yenileri yarattı veya en iyi durumda, görünürdeki hiçbir etkisi olmadan iç canavarı memnun etti.

Şahsen, kötü kodu yeniden düzenlememek çok zor buluyorum. Bir sürü kötü eski kodla çalışıyorum ve yeniden düzenleme işlemimin hiçbir şey kırmadığını kanıtlamak için hiçbir testim olmadığında dokunmamaya derin nefesler alıyor.

Kullanıcı arayüzünde benim için başka bir şeytan, tam anlamıyla UI düzenini değiştirmek için saat harcayabilirim, çünkü bunu yapmaktan zevk alıyorum. Bazen kendime kullanılabilirlik üzerinde çalıştığımı söylüyorum, ama gerçek şu ki, düğmeleri hareket ettirmeyi seviyorum.

Programlama şeytanlarınız nelerdir ve onlardan nasıl kaçınırsınız?

97
Dan

Erken genelleme benim büyük bugaboo'm; eldeki problemi önce çözmek ve genel durum için gerçek bir çözüme ihtiyaç duyuluncaya kadar beklemek yerine, her zaman genel durumun önüne geçiyorum ve olması gerekenden daha karmaşık bir ton kod yazarak.

Güncelleme:

Ayrıntılı bir açıklama için bkz. " Günah # 1 - Erken Genelleme ".

67
John Bode

"Buna geri dönüp daha sonra düzelteceğiz. Sadece şimdi çalışmamız gerekiyor!"

197
user18041

Son başvuru tarihi çok uzak, bunu yapmak için yeterli zamanım var, neden internette sörf yapmak için biraz zaman harcamıyorsunuz?

105
user281377

"Bu sadece bir kavram kanıtı kodudur. Bir kez beğendiklerinde gerçekten iyi yapacağım."

103
davidhaskins
  1. Yeniden Düzenleme sürümden birkaç gün önce kodun bir kısmı.
  2. İnternet: En büyük dikkat dağıtıcı şey.
  3. Yeni teknoloji: Ellerimi yeni teknolojiden uzak tutamıyorum.
  4. Optimize edin: Optimize edin, Optimize edin. .. ve daha fazlası
  5. Mükemmellik: Koddan hiç memnun kalmadım.
  6. TODO: Asla yapılmayacak zaman dilimlerinin olmaması.
  7. Zaman tahmini: Pek çok PM bunu "tahmin" olarak almaz. Onlar gerçeği kabul ediyorlar.
  8. Vaat: Çok fazla söz veriyorum.
74
Amir Rezaei

Mevcut çerçeveler ve kütüphaneler olduğunda, her şeyi şirket içinde inşa etmeye çalışmak için düşen av.

Tekrarlayan şeytanlarım: Erken optimizasyon ve mühendislik.

Ve hala% 100 önleyemiyorum ...

48
Tomas Narros

Aşırı iyimser tahminler

Yöneticiniz sizi aşağıya baktığında ve bağırsağınızın size söylediklerinden daha düşük bir tahmin vermek için yanan hissi hissettiğinizde ... yapma !

Sonuçta, bağırsağınız muhtemelen çok düşük!

46
Nicole

Projenizde bir teknolojiyi/aracı/dili kullanmak, çünkü daha yeni öğrendiğiniz için.

Bir geliştiricinin ne kadar iyi olduğunuzu kanıtlamaya çalışmak.

Yazdığınız kodu kendiniz olarak düşünmek için.

33
biziclop

Sadece bir mola vereceğim ve stackoverflow.com'a bakacağım;)

32
Richard Miskin

En kötü ayartma:

Oh, iyi .. Sanırım bir kirli küçük hile/hack/fix zarar vermeyecek.

Bil bakalım ne oldu, acıtıyor. :)

goto

31
Goran Jovic
25
Dan

Özellik Sürünme

Bir plan yapın, ona sadık kalın ve konuşlandırın. Ve sonra geri dönün ve insanların istediği şeyleri ekleyin.

Bunu defalarca gördüm. Oturup tasarımı tasarlıyorsunuz ve kodlamaya başlıyorsunuz. Kullanıcılar en sevdikleri özellik "eksik" hakkında bazı saçmalık duydum ve bunun için lobi başlar. Patronunuz 11. saatte eklemenizi istiyor, konuşlandırmayı faul ediyor, her yere böcek getiriyor ve 3 ay sonra, herkes yerleştikten sonra onu kaldırmanız isteniyor, çünkü kimse neden koyduğunuzu anlayamıyor o berbat retro özelliği ilk etapta! Tasarımın geri kalanının anlamsız olduğunu söyleyemez misiniz?

23
Satanicpuppy

Birkaç bira daha iyi ve daha uzun çalışmama yardımcı olacak.

17
Adam Crossland

"Evet, bir günde 2000 hat spagetti'nin bu devasa karmaşasını yeniden düzenleyebilirim ..."

16
Hila

"Bunun için bir test yapmadan geçebilirim. Test etmek çok zor."

ve bu kötü kardeşim,

"Testin yazmak veya anlamak ne kadar zor olursa olsun, bunun için bir test yapmalıyım."

16
Wayne Conrad

Erteleme ve iyimser görev tahmini en büyük günahlarım.

Birincisi için germe, şınav veya pull-up (veya başka herhangi bir fiziksel egzersiz) ve ikincisi için tahmin vermeden önce kötümser bir ruh hali.

15
Nikita Barsukov

"Mevcut kodu anlamaktan çok ( '- işlevselliği sıfırdan yeniden uygulamak çok daha kolaydır."

13
k3b

Yaşadığım projenin maruz kaldığı büyük zararlardan biri 'İç Platform Etkisi'. Bu, uzun zamandır devam eden Mimarların, yılda yaklaşık 20 milyon dolar üreten ancak güncellenmesi ve bakımı için 60 milyona mal olan bir proje yaratan sonsuz bilgeliğinde ortaya koydukları bir yaklaşımdır (açıkçası kaba rakamlar ama bu büyüklük problemin).

10
AlexC

NIH - Burada Bulunamadı

Üçüncü taraf çözümlere adil bir şans vermekte gerçekten zorlandım. Herkes, kendileri için özel olarak tasarlanmamış üçüncü taraf çözümlerinden doğal olarak şüpheci olmalı, ancak bu konuda% 100 objektif olmakta zorlanıyorum.

Zaman tasarrufu o kadar büyük olabilir ki, üçüncü taraf çözümlerinin 10'undan 9'unun kaçınılması gerekse bile, olanı işe yarayacak.

10
Nicole

Bunu bir yerde yapan bir kütüphane olmalı sendromu.

yakından ilişkili

Eklenti Fetişi

9
Newtopian

Müşterilerin gerçek veritabanının bir kopyasını analiz etmek yerine, sağlanan "örnek veriler" e karşı tasarım, kodlama ve/veya birim testleri. Son tarih kısaydı ve geleceğini söylemeye devam ettiler ama olmadı. Devreye alındığında patlama harikaydı. Gerçekten, bir müşterinin 3 ebeveyn müşterisi olmasını beklerdi.

real verilerinin bir kopyasını alana kadar bir daha asla bir proje başlatmayacağım.

9
dwidel

Mükemmeliyetçilik öldürür; muhtemelen projelerin başarılı olmaması için en büyük neden.

8
Naftuli Kay

Yeniden düzenleme yerine yeniden yazma.

7
Dave O.

Bazen programlama beni şişeye götürür.

7
mipadi

Bunu yapmanın daha iyi bir yolu olduğunu düşünmek. "Yeterince iyi" olabilecek bir şeye razı olmayacağım. Mükemmellikten daha azını almıyorum! Genellikle bu, bir sorun üzerinde farklı bir bakış açısı olabilecek başkalarıyla konuşarak veya bir çözümü farklı bir açıdan görerek önlenir.

6
JB King

Her şeyi noktaya otomatikleştirmek, araçların bakımı için gerçek işten daha fazla zaman harcar.

Çözüm: tıpkı kod optimizasyonu gibi, önce verimlilik darboğazlarını bulun ve ancak keşfedildikten sonra, onları iyi bir otomasyonla iyileştirin.

5
Dan

Programlama şeytanlarınız neler?

Bazılarının bahsettikleri dışında.

Öncelik: Proje ile ilgili yüksek öncelikli işi görmezden gelmek ve önce projedeki diğer şeyler üzerinde çalışmak, çünkü daha ilginçtir!

Onlardan nasıl kaçınırsınız?

Biraz daha disiplinli. Cidden, doğru disiplini yapmak için öz disiplin ve öz motivasyon bu "şeytanların" çoğundan kaçınmaya yardımcı olur.

4
Mahesh Velaga

Beynim bu projeden eskimiş. Gençleştirmek için bu kısa taraf projesinde hızlı bir mola vereceğim.

3
emragins

"There must be a better solution to this."

Ve sonunda düşünmeye ve düşünmeye ve çok uzun süre gittiğini anlayana kadar zihninin uzak bir ülkeye sürüklenmesine izin verirsin. İyi olmalı, ancak son teslim tarihiniz olduğunda değil.

3
gladysbixly

Henüz müşteriden onay alamadık ama son teslim tarihi yaklaşıyor, işte başlayabilmeniz için bazı ön kompozisyonlar ...

Daha sonra, projeyi kompozisyonlarla eşleştirmek için oluşturduktan sonra ...

Ah, işte müşterinin revizyonları, sadece birkaç küçük şeyi değiştirmek istiyorlar *

(* başlıca işlevler tamamen farklıdır)

Daha sonra, kısa bir süre için baskı altında olduğunuz için orijinal kusurlu modele dayanarak orijinal kodunuzu yeniden düzenlemeye devam edersiniz ve kısa bir son tarihin baskısı altındasınız ve bunların son revizyonlar olduğunu varsayarsınız.

Ben her zaman bununla biraz olsun. Bir web geliştiricisi olarak kaçınmak zordur. En iyi tavsiyem, değişiklikleri doğru şekilde yapabilmeniz için daha fazla itmeye çalışmaktır.

3
travis

Kod dondurma tarihinden sonra yeni kod yazma.

Kod dondurma tarihi taş olarak ayarlanmalıdır. Her türlü regresyon testini gerektirebileceğinden, bundan sonra yazılan yeni kodların gelecekteki sürümlere taşınması gerekir.

3
Mag20

Onlardan kaçınmayla ilgili soruyu cevaplamak için: Anti-Patterns ile tanışın, böylece onları tanıdığınızda onları arayabilirsiniz.

3
Lee Kowalkowski

Zeka. Tabii ki, her zaman değil. Bazı akıllılık ve kısalık kodunuzun çok güzel ve bakımı kolay olmasını sağlayacaktır. Ama sadece yapabileceğin için

x=foo?true:bar?biz,FooBar(true)?!foo:baz,FooBar(false):baz;

if ifadelerinin birkaç satırı yerine, yapmanız gerektiği anlamına gelmez.

Btw, evet örneğimde biraz fazlalık olduğunu biliyorum ... Eğer kendiniz bile yakaladıysanız :)

3
Earlz

Tüm diğerleri artı özellik sürünme: "Bunu yapsaydı gerçekten harika olurdu ve müşterinin onu seveceğini ve düşünürlerse spesifikasyona koyacağını biliyorum". Ben bu gerçek serin özelliği için şart var gerçek spec nerede sorarak bunu önlemek için çalışın.

Sonra tekrar, sık sık yazılı özellikleri almıyorum.

2
PSU

"Bu sadece pilot, bu yüzden bakımı veya genişletmeyi kolaylaştırmaya gerek yok".

Deneyimlerime göre, pilotun üretime girdiğini ve hurdaya çıkarılması gereken ürünün, pilotun hurdaya çıkarılması ve asıl ürünün üretime hazır duruma göre daha yaygın olduğunu görmek daha yaygındır.

2
jwenting

Düzenleyiciyi değiştirmek için çok uzun zaman harcamak. Programlama için en iyi yazı tipi ve renk düzenini bulmaya çalışmak.

2
dheerosaur

"Bana [yazılım/örneğin: paylaşım noktası] ile arabirim oluşturan bir özellik atandı. Muhtemelen bu yazılım hakkında bilinmesi gereken her şeyi bilmeliyim."

Ardından, bir veya iki gün içinde özellik yazılıp test edilebildiğinde, ürünü araştırmak için haftalar geçirirsiniz. Bilgi açlığının karanlık bir karnı vardır. rawr

2
Steven Evers

"Bunu daha sonra yorumlayacağım/belgeleyeceğim"

asla olmaz, yazar devam eder ve iş size atandığında kodlarına yorum yapmadıklarını öğrenirsiniz.

2
sunwukung

Anlamadan yeni bir projeye saldırmaya başlamak için ve aslında bununla çalışmaya başlamadan önce proje alanı hakkında biraz araştırma yaparak, sadece iyi bir başlangıç ​​noktasına sahip olmak ve projenin daha karmaşık olduğunu kanıtlamaktan kaçınırım. Başlangıçta öyleydim.

Ben de düğmeleri ile hareket etmek gibi sorun var, onlar çok güzel !! Ama belki de multimedya sistemleri ve kullanıcı arayüzü tasarımı yapıyorum ... Bu yüzden benim için bu sorunun çözümü, bunu müfredata dahil etmek ve bu konuda bir şeyler incelemekti, böylece kimse görürse geçerli bir mazeretim var UI ile çok oynuyorum. (Bu, arka planı yeşil, turuncu metin ve çok fazla sarı içeren simgeleri de içerir.)

1
Coyote21

Çok tam liste: anti-desen .

1
vartec
/**
* Calculates the return value for humptyDumpty
*
* return int modifiedHumptyDumpty
*/
function awesomeWayToCalculateSomething(int humptyDumpty) {
.. 
}

YAPILACAKLAR: Bunu doğru bir şekilde belgelemem gerekiyor.

Will _never_ olur

1

Bir dil özelliği, bir deyim veya bir tasarım deseni kullanmak, sorunun en iyi çözümü olduğu için değil, sadece onu kullanmak için.

1
Dima

Kafamda enumların Java'da olduğundan çok daha kullanışlı olduğunu düşünüyorum. Onlarla çok fazla uğraşmaya ve sonra çok sıkılmaya başladım çünkü polimorfizmi gerçekten desteklemiyorlar.

1
MattLBeck

kurum içi gelişmeyi önlemek için kendinizi taahhüt etmenin, bir tekerleğin% 90'ı bir icattan daha iyi değildir.

1
M. Utku ALTINKAYA

Bir çerçeveyi tam olarak anlamadan kullanmak. Ama sonra tekrar. bir çerçeve sadece yaratıcıları tarafından tam olarak anlaşılır (çoğu vaka). Bu öğe için gerçek bir çözümüm yok ama bir çerçeveden mümkün olduğunca anlamaya çalışıyorum.

1
user18483

Sizi rahatsız eden bir hatayı düzeltmek, çünkü "çok basit" ama asla QC ve/veya müşteriye söylemiyor.

Bu düzeltmeler her zaman üretimin çökmesine neden olur.

1
Scott McIntyre

Birisi erken genelleme dedi, ama erken uzmanlık kadar kötü olabilir. Erken genelleme ile, vakaların% 50'si için çalışan bir yazılım alabilirsiniz, ancak erken uzmanlık% 5 veya hiçbiri için çalışmayabilir. Sonunda, yönetim% 5'ten% 50 daha fazla olacaktır.

1
MPelletier

Benim için zaman zaman şirket için sayısız saat ekstra iş yapmak sadece "aradıkları yön bu değildi."

1
user13280

Programlama şeytanlarınız neler,

Daha önce bahsedilen her şey, özellikle deli gibi refactor dürtüsü.

ve onlardan nasıl kaçınırsınız?

Önemsiz bir düzenlemeye başlamadan önce, ellerimi 5 saniye boyunca klavyeden çıkarın ve değiştirmenin veya bırakmanın olası sonuçlarını hızlı bir şekilde tartın. Daha sonra tekrar çalıştırmadan önce, aynı sonuçları yaklaşık bir dakika tartın.

1
Cheezmeister

Yatakta çalışmak veya çalışmak için rahat bir kanepe bulmak için.

1
kiewic

Mükemmel olmak"

İlk seferde doğru yapmaktan kaçınmak bir sorun olsa da, mükemmellik üzerine sonsuz bir odaklanma kadar kötü değil. Sadece hallet, mükemmel diye bir şey yoktur ve eğer varsa, tamamen geçicidir ya da zaten yapılmıştır ve tekrar yapmaya değmez.

0
blunders