Kasıtlı olarak kötü kodla nasıl başa çıkıyorsunuz?


21

Sadece TheDailyWTF'de değil SO'da da kasıtlı olarak kötü kod hakkında birçok hikaye var. Tipik durumlar şunları içerir:

  • İşe yaramaz bir zaman kaybına uğrayan bir yapıya sahip olmak (örneğin, bazı büyük değerlere sayılan boş bir döngü) sayesinde programcılar, görev aldıklarında uygulamayı kaldırarak kolayca "hızlandırabilir".
  • Pahalı destek talepleri oluşturmak için kasıtlı olarak yanıltıcı, yanlış veya dokümantasyon sağlama.
  • Kolayca hatalar veya daha da kötüsü, her şeyin yolunda çalışmasına rağmen, uygulama kilitlenir, böylece kilidin açılması için pahalı bir destek çağrısı gerekir.

Bu noktalar, az çok kötü niyetli bir tutum sergiler (bazen kazayla olsa bile), özellikle de ilk nokta oldukça sık görülür.

Kişi bu yapılarla nasıl başa çıkmalı? Sorunu yok sayın veya sorunlu kodu kaldırmanız yeterli mi? Yöneticilerine haber verin veya "özelliği" tanıtan kişiyle konuşun mu?


10
"Bazen kazayla" mı yoksa "kasten kötü mü" mi? İkisinin de nasıl olacağını anlayamadım.

Yanıtlar:


7

En kötü kod, anlama eksikliğinden kaynaklanır ve çözüm eğitimdir.

Kodlayıcının deneyimi veya projenin geri kalanıyla tamamen ilgisi olmayan bir şey nedeniyle kasıtlı olarak kötü kod tamamen farklıdır. Bu nedenle, kodu neden bilerek sabote ettiklerini öğrenmek zorundasınız ve bu konuyu ele almalısınız. Bu, ofis politikalarının daha sık sık olmadığı anlamına gelir ve bu nadiren herkes için hoş bir durumdur.

Siyaset tarafını nasıl idare edeceğime dair, birçok (yukarıda belirtilmemiş) koşullara bağlıdır. Nasıl idare ediyorum kod ilk marka olmaktır emin ben değil bir yanlış anlama-o gerçekten kötü kod sonra bariz eksiklikleri gidermeye. Makul bir şekilde mümkünse, hatalı kodun başarısız olacağı testlerini yazın. Doğru anladığımı tekrar kontrol etmek, kodu yazan kişiyle konuşmak anlamına gelir. Bu, niyeti kabul etmeden çok kibar ve kibar bir şekilde yapılmalı ve daha sonra ihtiyaç duyulan temel (politik) nedeni bulmaya yardımcı olabilir.

Nakliye, fildişi kule mükemmellikten daha önemlidir, ancak ele alınması gereken iki nokta vardır. Belirgin eksikliklerin giderilmesi, çabaların% 20'siyle sonuçların% 80'ini alır ve bu tür düşük-asılı meyveler nadiren görmezden gelmeye değerdir. Ancak, daha önemlisi, altta yatan (politik) nedene değinmezseniz, kasıtlı olarak kötü kod yazılması ve daha fazla soruna yol açması ve muhtemelen nakliyeyi engellemesi olasıdır.


28

Asla (20 yıl içinde) kasıtlı olarak kötü bir kodla karşılaşmadım, ancak bahsettiğiniz örnekler bir işveren veya müşteriyi dolandırmaya teşebbüs ediyor gibi görünüyor (en azından bana ama en az IANAL) Yöneticinize belirtme yükümlülüğü.


2
Kabul. Kimse bilerek kötü kod yazmaz. Bir problem çözüyorlar ve bildikleri en iyi şekilde çözüyorlar. Yanlış yönlendirilmiş, azalmış, cahil, vb. Olabilirler. Ama bir geliştiricinin kasıtlı olarak kötü olduğunu bildiği bir şey yazdığını bilemiyorum.
Dan Ray

8
Yasal olmasa bile, en azından etik bir zorunluluk var.
Chris Farmer

@ChrisFarmer Etik zorunluluğu daha geniş bir bağlamdan ayıramazsınız - kasıtlı olarak kötü kodun, ekonomik ya da politik olarak yasal kolektif direnişi temsil ettiği bazı bağlamlar vardır. (Ve bir iş sözleşmesi, biçimlendirdiği ilişki bireysel veya yapısal olarak sömürücü olmadığında, yalnızca iyi niyetle onurlandırılmayı hak eder.)
user234461 15

11

Şirketin kültürüne bağlıdır. Çoğu zaman, tüm kötü kodları düzeltmek ve temizlemek sizin işiniz değildir.

Gönderen İş Yerinde Kodlayıcılarda da bu durumda uygulanabilir, overengineering Jamie Zawinski düşüncesinde:

Günün sonunda, lanet şeyi yolla! Kodunuzu yeniden yazmak ve daha temiz hale getirmek harika ve üçüncü kez gerçekten güzel olacak. Fakat mesele bu değil; kod yazmak için burada değilsiniz; ürünleri sevk etmek için buradasınız.

Çok sayıda kodlayıcı ve kod var ve bunların hepsi karşınıza çıktığı gibi onları düzeltmeye çalışmak, mevcut proje / görev pahasına, eğer ürün "çalışıyorsa" buna değmeyebilir. Çok sık, hepimiz sadece koli bandı programcılarıyız.

Ayrıca Joel Spolsky'nin gönderisine bakın: The Duct Tape Programmer


+1 Ben gerçekten nakliye ürünleri konseptinin hayranıyım. Bence çok fazla teknik profil bu kavramı kaçırıyor.

Ben de + 1'im. Neyin önemli olduğuna dair çarpık bir görüşü destekleyen çok fazla sayıda "Temiz kod" - kitap çeşitleri vb. Vardır. Kod kalitesi sadece çok önemlidir. Kazananlar en iyi ürüne sahip olanlar değil. Yeterince hızlı bir şekilde sevk edilen iyi bir ürüne sahip olanlar.
Joonas Pulakka 27:10

4
Sanırım sorudaki noktayı kaçırdınız - adam sadece kötü programcılar tarafından yazılmış olan koddan değil, kasıtlı olarak kötü koddan bahsetti .
Hila

@Hila Bence kötü kodun kasıtlı olup olmadığına hala değiniyorum. Atanan proje / görev listesinde bir sorun olmadığı sürece, tüm kötü kodları düzeltmek ve temizlemek için bir koli bandı programcısının sorumluluğu değildir . Dışarıdaki kültür akademik değil ve temiz / güzel kodlar yazıyor. Bir ürünü / işi nakliye ve destekleme ile ilgili. Şahsen karşılaştığım tüm kötü kodları düzeltmeyi çok isterdim, ancak zamanımın% 100'ünü buna adayamıyorum - sadece bana verilen görevi / projeyi asla bitiremem.
spong

3
@ sunpech Ancak kasıtlı olarak kötü kodları temizleme, herhangi bir kodu temizlemeyle aynı değildir. Uygulamanızı daha "güzel" hale getirmekle ilgili değil, orada bilerek yapılan zararlı kodu düzeltmekle ilgili. Bir doktorun, hastanın içinde unutmuş bir meslektaşı makas almaması gerektiği, çünkü bir kardiyotorasik ameliyat hayat kurtarıcı ve dikişlerin ne kadar güzel olduğu ile ilgili değil.
Hila

4

Bu tutum daha kötü bir şeyin belirtisidir.

  • Yönetim, geliştiricinin rekabetini teşvik ediyor mu?

  • Takım ruhu nerede?

  • Görevler ekibin kendisinden başkası tarafından mı atanıyor?

  • ...

Her durumda, rahatsız edici kodu kaldırmak yeterli değildir. Yöneticisine şikayette bulunmak kesinlikle takım ruhunu iyileştirmeye yardımcı olmaz.

Doğrudan kişiyle konuşmaya ve onu yargılamadan birçok soru sorarak nedenini anlamaya çalışırdım. Bütün takım agresiflik olmadan yapmak zorunda.

Çoğu durumda, bu yapıcı davranış gerçek sorunu (en kötüsünü) ışık altına sokar ve bunun üzerinde çalışabilirsiniz.

Gerçekten işe yaramazsa. Bu geliştiriciyi ekipten kaldırın.


4

Kasıtlı olduğunu düşünürsem, muhtemelen adamı kovardım! Birinin yeterince iyi bir programcı olmama sonucu olsaydı, onun becerileri üzerinde çalışırdım. Yukarıdan itildiyse, muhtemelen yeni bir iş aramaya başlardım.


2

Kişi bu yapılarla nasıl başa çıkmalı? Sorunu yok sayın veya sorunlu kodu kaldırmanız yeterli mi? Yöneticilerine haber verin veya "özelliği" tanıtan kişiyle konuşun mu?

Bağlama bağlı olarak, bunlardan herhangi biri en uygun olabilir. Diğer olasılıklar arasında farklı bir projeye geçmeyi istemek, yeni bir iş bulmak ve sorgulanabilir ahlak ve / veya yasallık gibi çeşitli davranışlar sayılabilir.

Bununla birlikte, gerçek gerçekleri ve dahil olan gerçek insanları bilmediğimiz göz önüne alındığında, açıkladığınız pozisyonda olan birinin tavsiyemize / 2 sente değer vermemeye çok dikkat etmesi gerekmiyor.

Bu konuştuğunuz gerçek bir durumsa , yöneticinizle ne yapmanız gerektiği konusunda tavsiyelerini sorarak sessiz bir şekilde konuşmaya değer olabilir . Mümkünse deneyin neyi hakkında konuşma yapmak için ise size / değil parmağını hakkında, yapabiliriz ve yapmalıyız. Mümkünse, isimleri yazmayın. Yöneticinizin zaten problemi çözmesi ihtimalinin oldukça yüksek olması.

Ancak kapak tarafı, bunu orantısız bir şekilde üfliyor olabilirsiniz. Bir şey yapmadan önce bu konuda uzun ve sert düşünün. Atacağınız herhangi bir adımın size geri tepme olasılığı da dahil ... sonuçları düşünün.

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.