Daha az deneyimli bir programcıdan kod düzeltmeyi nasıl yapmalıyım?


19

Küçük bir arka plan: 10 kişilik bölümümüz için iki programcıdan biriyim (geri kalanı sanatçılar ve yönetim). İkimiz, şeylerin iyi akması ve ortaya çıkan projeleri geliştirmesi için gereken tüm kodlamaları yapıyoruz. Yaklaşık 4 yıldır programlıyorum, bu onun ilk "gerçek" işi (koyduğu gibi). Genellikle herhangi bir zamanda farklı projeler üzerinde çalışıyoruz.

Birkaç ay önce daha sonraki bir proje için kullanılacak bir dizi ders geliştirdim. Bu projenin büyük bir kısmı (faturalandırma nedeniyle) bir GUI arayüzü tasarlamak ve programlamak üzere kendisine devredildi. Yeni olduğu için, tasarıma biraz yardım ettim ve geri kalanıyla ihtiyaç duyup duymadığını yardım istedim. Arabirimi birkaç hafta önce bitirdi, bu da biraz yavaş olmasına rağmen çalıştığını göstermek için demo yaptı.

Üzerinde çalıştığım projenin bir sonraki bölümü başladı . Sonraki adımlarla başlamak için arayüzü açtım ve hemen sorunlara girdim (biraz yavaş, biraz eksik, ortak eylemlerdeki hatalar, vb.). Birkaç sorun için koda baktım ve O(n^n)olması gereken çağrıları buluyorum , O(n)hata kontrolü (Python'da) olmayan varsayımlar, orijinal koda eklenen GUI referansları vb.

Şimdi, kesinlikle ona neyin yanlış olduğunu ve nasıl düzeltileceğini öğretmek istiyorum, ama bir sonraki projesine çoktan geçti ve bu birkaç hafta önceydi. "Geri dön ve doğru yap!" Demekten korkuyorum. (elbette yardımıyla) çok sert ve bu arada yapılması gereken başka projelerimiz var. Şimdilik kodu kendim düzeltmeli ve gelecekte bir şeyler yakalamaya çalışmalı mıyım?


4
Gelecekte, sizin tanımladığınız gibi hataları önleyecek kodlama yönergeleri üzerinde anlaşmaya varma olasılığı var mı?
Benni

5
Derhal yönetime koşmamanız ve ona söylememeniz iyi bir şeydir. Bazı şirketler suçludur. Düzeltmeleri kontrol ederken, bunları bir araya getirmenin bir yolunu bulun ve daha sonra bu adama daha sonra bakmasını sağlayın. Öte yandan, yeni bir mezun bile O(n^n)başka bir yol olmadığı sürece hiçbir şeyi kodlamamalıdır . Eğer yaparlarsa, muhtemelen algoritmalarda bir C aldılar ya da almadılar ya da berbat bir öğretmeni vardı. Sık karşılaşılan sorunları bulmaya yardımcı olmak için bir tür araç kullanmak iyi olurdu. Belki bir sonraki görev olarak bu adam bazı performans testleri yazabilir?
İş

Neden yanlış olduğuna dair dokümantasyonu olmayan bir O (n ^ n) nokta. Bunu gerçekten yapmak zorundaysanız, yorumların nedenini daha iyi açıklamıştı.
Loren Pechtel

"Hey, O (n * n) o kadar da kötü değil, birçok uygulama gerektiriyor ..." diye yazmak üzereydim ama sonra çarpma işareti değil, bir katil ^ olduğunu fark ettim!
Max

O (n) büyük bir sabite sahipse ve n küçükse, O (n ^ n) O (n) 'den daha büyük bir büyüklükte olabilir. codinghorror.com/blog/2007/09/… Sonra tekrar, n ^ n aşırı: D
Coder

Yanıtlar:


33

Bir tür kod inceleme politikası oluşturmak gibi sesler, birden fazla düzeyde yararlı olabilir. Bazı acil faydalar:

  • Kod işlenmeden önce kodunun kalitesini doğrudan etkileyebilir, böylece kod taban kalitesini yüksek tutarsınız
  • Başka bir göz grubunun yakalayabileceği benzer hatalar yapmanızı önler
  • Kodlama kılavuzlarının yokluğunda, incelemeler doğal olarak kodlama stilinde tutarlılığa yol açar
  • Bilgi paylaşımı. Sadece ikiniz ve biri otobüsle vurulursa ...

Şimdi devam edip kodunu temizlemeye başladığınızda, bu kodu gözden geçirmek istediğinizde bunu bir öğretim alıştırması olarak kullanın. Eşyalarınızı gözden geçireceksiniz ve bir dahaki sefere daha iyi nasıl yapacağınızı öğrenebilir.


3
+1 Kodu incelemesi, bununla ilgili harika bir yöntemdir. Ben "daha iyi bir şey kaçırmadım emin olmak için yaptığım değişikliklere bir göz atmak ister misiniz?"
Steve Jackson

1
+1 Kod inceleme herhangi bir "altın kural kodlama yönergeleri" daha çok daha uygun olduğunu söyleyebilirim .. Pek çok şey asla iyi değil.
Max

Bu fikri gerçekten seviyorum, teşekkürler. Şimdi sadece kod değerlendirmeleri yapmak için iyi yollar üzerinde biraz araştırma yapmam gerekecek!
TorelTwiddler

1
Aslında mumak.net/stuff/your-code-sucks.html adresinde bazı temel bilgileri içeren iyi ve eğlenceli bir kağıt var . Çoğunlukla, başarılı incelemeler için son derece önemli olan incelemeleri yapıcı bir şekilde yürütmek için davranış teknikleri ile ilgilidir.
nithins

@TorelTwiddler, sadece kod incelemelerinin öğrenmek için olduğunu, suçlama olmadığını unutmayın. İyi yaptığı şeylere dikkat edin, bu yüzden iyileştirmenin yollarını önermekle aynı zamanda iyi olduklarını bilir.
CaffGeek

5

Asla kodlarını asla düzeltmezler, aksi takdirde hata yaparlarsa yakalar ve düzeltirsiniz. Görev tamamlanana kadar yapılmaz . Profesyonel başladığımda gerçekten şanslıydım ve doğrudan amirim taahhüt ettiğim her şeyi tekrar kontrol etti ve daha iyi bir çözüm olsaydı ya da aptalca bir hata yapsaydım bana söylerdi, bu da becerilerimin daha iyi olduğu anlamına geliyordu, bu da daha hızlı ve gelişmiş olduğum anlamına geliyordu. daha sert bir cilt.

Kaymasına izin vermek kötü alışkanlıklar doğuracak, şimdi düzeltmek onların eleştiriyle daha iyi başa çıkmalarını ve bittiğini iddia etmeden önce üç kez kontrol etmelerini sağlayacaktır.


2

Projenin "çalıştığını" ve makul bir süre içinde yapıldığını çıkarabilir miyiz (bazı berbat ama düzeltilebilir tasarım sorunları olsa da)? Eğer öyleyse, yıllar boyunca gördüğüm birçok projeden çok daha iyi durumda.

Daha fazla iletişimin ekibinize yardımcı olacağını düşünüyorum ve bu da düzenli kod incelemesi ile yapılabilir.

"Çok sert" olma konusunda hassas olmanız iyi ve ben kod gözden geçirme gençler millet ızgara ve inceden inceye gözden demoralizing sıcak koltuk deneyimi olmak gerektiğini aklınızda tutacağını düşünüyorum. Üst düzey geliştiricilerin iyi uygulamalar göstermesinin ve herkesin "hatalar" ın varlığında bile kibar ve arkadaşça davranarak birbirlerine güvenmesinin bir yolu olabilir.

İnsanlar gerçekten iyi şeylerin neye benzediğini gördüklerinde iyi öğrenirler. Bu, sistematik olarak her küçük kusuru işaret etmekten daha iyidir. Ancak O (n ^ n), nazikçe ve yapıcı bir şekilde belirtilmelidir.


0

Bilginizi paylaşın.

Ona bir kıdemliden bir yetişkine öğretmek karşılığında yeni projesinde yardım teklif ederdim.

Neden her iki projede de programlamayı eşleştirmiyorsunuz?

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.