Dili bilmediğinizde kod kalitesi nasıl değerlendirilir? [kapalı]


10

Varsayımsal olarak, deneyimim .NET'deyken yeni bir PHP geliştirici pozisyonu için biriyle röportaj yapsaydım, bana verdikleri kod örneğinin verimli ve kaliteli olup olmadığını nasıl belirleyebilirim?

Başka bir deyişle, dili bilmiyorsanız bir programcının kodunu değerlendirmenin en iyi yolu nedir?


1
Sana kırmaktan nefret ediyorum, ama :-) Röportaja dili bilen ya da kendin öğrenen birini dahil etmiyorsun.
Joppe

2
Bu yüzden mülakat bir takım çabasıdır. Değerlendirebildiğinizi değerlendiriyorsunuz ve bu tür şeyleri aşina olan bazı teknik ekip liderlerine erteliyorsunuz.
Kaz

Benim için en iyi ölçüm, işlevlerin boyutu (burada iç içe geçmiş derinlik dahil) ve ardından sınıfların / dosyaların boyutudur.
m3th0dman

Yanıtlar:


20

bana verdikleri kod örneğinin verimli ve kaliteli olup olmadığını nasıl belirleyebilirim?

Değerlendiremeyeceğiniz şeyler dil deyimlerinin doğru kullanımı ve kütüphane kullanımıdır. Yani, bunlar bakmaya çalışmanız gereken şeyler değil.

Değerlendirebileceğiniz:

  • Kodun ne kadar iyi yapılandırılmış olduğu
  • İyi adlandırılmış değişkenler (bir şeyleri anlayabilir misiniz)
  • İyi oluşturulmuş fonksiyonlar / kod birimleri
  • Kod tabanındaki tutarlılık

Yukarıdaki noktalar (ayrıntılı olmasa da) kodun kokup kokmadığını ve deneyimli bir programcının iyi veya kötü olarak tanımlayabileceği bir şey olup olmadığını gösterecektir.

Kısacası - dilden bağımsız olarak iyi kodu göstermesi gereken şeyleri arayın.


5
Bir başka önemli soru: "Yorumlar açık, anlamlı ve anlaşılması kolay mı?" Dile çok az maruz kalsanız bile, yorumlardan bir kod parçasının ne yaptığını biraz öğrenebilir misiniz?
SinirliWithFormsDesigner

2
@FrustratedWithFormsDesigner - Yorumlar? Onlar ne? Ciddi olsa da, kod kendi kendine yorum olmalı. Yorumlar sadece kodun nedenini açıklamak veya neden göstermek için orada olmalıdır.
Oded

6
Son derece dikkatli olmaya çalışıyorum: kodun alışkın olduğunuz gibi en çok kimin yazdığına bağlı olarak seçim yapmak çok kolaydır, bu da bu dilin nispeten zayıf kullanımı olabilir.
Jerry Coffin

@FrustratedWithFormsDesigner Oded muhtemelen bu elegantcode.com'u
Joel

4

Röportajın bir parçası olarak akış şemasını yapmasını veya üzerinde gezinmesini sağlayın. Sormak için mükemmel bir bahaneniz var ve nasıl açıkladıklarını görmek için nasıl düşündüklerini anlatıyor.

Tercih ettiğiniz dile atlayacaklarsa, çok fazla mentorluğa sahip olduğunuzu biliyorsunuz, bu yüzden her şeyden önce iyi mantık / akıl yürütme becerileri aramalısınız.

Tercih ettikleri dilde çalışmaya devam edeceklerse, bir başkası hızlanana kadar daha ince dile özgü ayrıntılar üzerinde bir miktar kendi kendini yöneteceklerini kabul etmek zorunda kalacaksınız, bu yüzden tüm etkileşime girmeniz gerekecek tasarım tarafı da orada.


1
Aday, kodunu arkasındaki niyet ve amaç net olacak şekilde açıklayabilirse ve görsel olarak, organizasyon ve genel yapı makul görünüyorsa, muhtemelen kodun neyi temsil ettiğini makul bir şekilde kavrarlar. Ve benzer bir temiz reprodüksiyonu tekrarlayabilir. Belirli parçalar 'belirli bir refernce malzemesinin nasıl yapılacağını gösterdiği gibi' kadar az açıklansa bile, refernece materyali isimlendirirken, en azından sadece 'kodlama' değil, aynı zamanda ve rutin olarak karşılaşmadıkları sorunlara çözümler uygulayabilirler.
JustinC

1

Kemik başlı / açıkça yanlış kod bir yana, verimli büyük ölçüde söz konusu dilin derleyicisine / yorumlayıcısına bağlı olacaktır ve bunu bir kod örneğinden gerçekten göremeyeceksiniz. Bir kod örneği, alt yazıları üzerinde ince çin olarak güzel yazılmış ve zarif olabilir, ancak kötü derlendiğinde / yorumlandığında yavaş çalışır.

Herhangi bir aşinalık olmadan dil özelliklerinin / sözdizimsel şeker / sözleşmelerin deyimsel kullanımını değerlendiremezsiniz.

Genel olarak iyi düzenlenmiş olup olmadığını, düzenli, kontrol akışı, değişken adlandırma, işlem sırası vb. Gibi evrensel hususlara dayanarak anlatabiliyor olmanız gerekir.

Bununla birlikte, daha pratik olarak, dilin sürece ne yapacağını biliyorsanız, o dil için bir veya daha fazla stil kılavuzu bulmaya çalışabilir, kitapçıya gidebilir ve o dil için birkaç kitap çevirebilirsiniz ve dil (ler) inizde tanıdığınız bir şeye analoglar arayan kod örneklerini gözden geçirin, o dili kullanan bir veya daha fazla açık kaynak projesine göz atın.

Zamanınız varsa ve bir maliyet engeli yoksa, o dil için bir geliştirme ortamı oluşturacak ve bir Hello World uygulamasını kranklayabilecek, bir kod kata yapabilir veya basit bir küçük uygulama yazabilirsiniz. içinde. Oldukça hızlı bir ilkel referans çerçevesi geliştireceksiniz ve bu sadece söz konusu kodu gözden geçirmek için özel bir bacak sağlamakla kalmayacak, aynı zamanda dil tarafından zorlanabilir ve biraz dallanmış olabilirsiniz.


1

Dilden bağımsız olarak:

  • Endişelerin açık bir şekilde ayrılması, sınıfların uygun kullanımı (OO dilleri için) veya kodu yeniden kullanılabilir, modüler 'parçalara' bölmek için kasıtlı olarak yapılan herhangi bir girişim göstergesi var mı?
  • Benzer şekilde, testlerin herhangi bir kanıtı - birim testi veya başka türlü?
  • Üretim kodu ise, geliştirme ve dağıtım arasında çok az ayrım yapılmasını önerebilecek hata ayıklama dizeleriyle doludur mu?
  • Kod herhangi bir adlandırma kuralına uyuyor mu (bu konvansiyonu beğenip beğenmemeniz önemli değildir!)?
  • Çıktıdan ziyade dosyanız varsa, dosyadaki her işlev / sınıf aşağıdakilerle ilgilidir (yani data_access_layer adlı bir dosyaysa , görüntüleri işleyen işlevlerin kanıtları muhtemelen yerinde olmaz).
  • Özellikle PHP gibi web tabanlı diller için kullanıcı girdilerine güven duyulmadığına dair göstergeler de iyidir. Dolayısıyla input = escape (input) gibi yapılar en azından sorunun farkında olduklarını gösterir.
  • Yorumlar veya kendini tanımlayan kod her zaman iyidir. Mevcut olması gereken yorum miktarı hakkında birkaç düşünce okulu vardır, ancak yorumların tamamen yokluğu
  • Alaycı olmanın pahasına, röportajdan önce bazı kodları google olarak da söyleyebilirim. Ne yazık ki kolayca bir kopyalama ve yapıştırma işi olabilir.

Bunların hepsine sahip olmayan herhangi bir kodun otomatik olarak zayıf olduğunu söylemiyorum, ancak bunları yansıyan ve uygulamalarını düşünen birinin göstergeleri olarak düşünürdüm.

Ancak, tüm bu göstergeler için, kodun nasıl bir gerekçe olduğunu sormalısınız. Seçimlerinin iyi, dile özgü bir nedeni olabilir ... ve bundan sonra, google onlar ve diğer adaylar gittiğinde arkadaşınızdır, çünkü söylediklerinin makul olup olmadığını kontrol edebilirsiniz ...!

İyi şanslar, çünkü iyi insanları işe almak kuruluşunuzdaki en önemli rollerden biridir;)


Gez, bu @Oded (ve yorumlar) söylediklerinin çoğunu çoğaltır.
frackham

0

Söz konusu dili bilen birinden görüşmeye gelmesini veya örneğe bakmasını istemelisiniz. Böyle bir kişi varsa kötü noktaları daha büyük olasılıkla bulacaktır.

Aday bir ekipte mi çalışacak? Ekip üyelerinin onunla tanışmasına ve yetenekleri hakkında sorular sormasına izin verin.


-2

Dili kullanırken karşılaştıkları sınırlamaları sorun. Size basit bir SQL sorgusu göstermelerini isteyin. Bir yuh değerinde herhangi bir Php dev çok fazla çaba harcamadan temel bir seçme / güncelleme / silme sorgusu patlama mümkün olmalıdır.

Doug

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.