Ben deneyimli bir geliştiriciyim, ancak pek çok kod incelemesi yapmadım. Python ile yazılmış kodu incelemem isteniyor ancak Python'u tanımıyorum.
Bilmediğim bir dilde kodu incelemenin bir anlamı var mı?
Ben deneyimli bir geliştiriciyim, ancak pek çok kod incelemesi yapmadım. Python ile yazılmış kodu incelemem isteniyor ancak Python'u tanımıyorum.
Bilmediğim bir dilde kodu incelemenin bir anlamı var mı?
Yanıtlar:
Herhangi bir anlamı var mı? Evet. Bir programlama dilinin anlambilimi hakkında hiçbir şey bilmeseniz bile , karakterleri okuyabilir ve tutarsız biçimlendirme, eksik yorumlar, yanlış seçilmiş tanımlayıcılar, belirgin çoğaltma vb.
Çok anlamlı ya da zamanınızın karşılığını ödemek için yeterli anlamda ? Emin değilim. Bu, konumunuza, ekibinizin iş akışındaki kod incelemelerinin önemine ve yeterince iyi ölçemediğimiz bazı diğer faktörlere bağlıdır.
enumerate
.) Bence yorumunuz, aşina olmadığınız bir dili neden incelemeye çalışıldığının harika bir örneği olduğunu düşünüyorum.
Code Review Stack Exchange'e düzenli olarak katkıda bulunan biri olarak, örneğin Dil ile ilgili sorunlardan muzdarip birçok soru ile karşılaşıyorum, örneğin:
ve liste devam ediyor. Ancak dili bilmeme gerek kalmazken, hala bu sorunları / noktaları gözden geçirebilirim.
En iyi kullanıcılarımızdan birkaçının aktif olarak kullanmadıkları veya bilmedikleri dillerde en iyi cevapları var. İlk ondan iki tanesi bile bilmediğim dillerde ve makinemde derleyemiyor / çalıştıramıyor.
Birinin sahte kodunu gözden geçirmenin aynı olacağını bile söyleyebilirim. Anladığınız şeylerle ilgili şeyleri gözlemleyebildiğiniz ve yorumlayabildiğiniz sürece, iyi olacaksınız ve konuyla ilgili olacak.
İşte bence, en alt satırda:
Python'u bilmeme konusunda özel durum için, özellikle buna karşı temkinli olurdum . Python'un, Python'un diğer dillerde beklediğinizden çok farklı görünmesini sağlayan bir çok deyim ve standart uygulama vardır. (Aslında, Python benim kod bakmak yaptık vurgulayan şeyler düşünmek daha iyi de diğer dillere değil, başka bir yol etrafında.) PEP8 ötesinde tamamen Python teşvik zihniyeti kaçırabilir nasıl iyi bir örnek vardır.
Basit bir örneğe bakalım. Bu kodu al:
f = open('/home/me/something.txt')
try:
content = f.read()
finally:
f.close()
Bu kodla ilgili sorunu gördün mü? Python ile çalışmadıysanız, muhtemelen kullanmazsınız. Sorun Python'da tamamen aynı şeyi yapan çok tercih edilen bir tarzın bulunması :
with open('/home/me/something.txt') as f:
content = f.read()
Bu bir içerik yöneticisidir. Ne için iyi olduklarını biliyor musun? Ne zaman kullanmanın uygun olacağını biliyor musunuz? Kendinizinkini yaratmanın ne zaman uygun olacağını biliyor musunuz? Hayır? O zaman muhtemelen Python'u incelemeye hazır değilsin.
Başka bir örneğe bakalım.
def add_fifty(other_list):
result = list()
for i in other_list:
result.append(i + 50)
return result
x = range(10)
y = add_fifty(x)
Sorunu gördün mü? Sorun, bu yöntemin tamamen gereksiz olmasıdır . Operasyon bu kadar basit olduğunda, muhtemelen sadece bir anlama kullanmalısınız:
x = range(10)
y = [i + 50 for i in x]
Bunu görmediysen, Python'un özelliklerini ve deyimlerini bilmiyorsun.
Sizden Python kodunu tam olarak gözden geçirmeniz istenmiş olabilir çünkü Python'u tanımıyorsunuz . Bir takımda "aptal" olmasının faydalı olduğu bir yönetim teorisi var. Sana kötü bir isim demiyorum :) Fikir, bir ekibin grup düşüncesinden muzdarip olabileceği ve tünel vizyonu geliştirebileceği yönünde. Bundan kurtulmanın bir yolu, takıma, diğer takım üyelerinin bir "aptal" olarak kabul edeceği, yani konuyu bilmeyen birisini eklemektir. Kendinizi bilgilendirmek için sorular soracaksınız ve sorular, diğer ekip üyelerinin muhtemelen asla dikkate almadığı bir bakış açısıyla gelecek.
Python'u tanımıyorsunuz, bu yüzden Python kodlayıcılarına sıradan görünen şeyler size garip gelebilir. Takımın asla düşünmediği bir gelişme önerebilirsin.
Kod inceleme, geçersiz yazım ve yanlış biçimlendirme içeren değişkenleri aramakla ilgili değildir. Bu tür şeyleri bulmak için kod incelemesi kullanıyorsanız, zamanınızı boşa harcamayı bırakın ve bir araç kullanın.
Kod incelemesi, acemi programcılar tarafından tasarımın iyileştirilmesi ve yaygın hataların tespit edilmesi ile ilgilidir.
C ++ 'da programladığımdan ve Python'u yeterince iyi bilmediğim için Python kodunu incelemeye cesaret edemezdim. Ancak bir Java kod incelemesinde yardımcı olabilirim.
Hangi dilde program yaptığınızı söylemediniz, ancak programlanan dili bilmiyorsanız, kod incelemesinde neye katkıda bulunabileceğinizi görmüyorum.
Kod incelemeleri (aslında kusurları aramanın yanı sıra), bir ekip üyesinden diğerlerine kod eklenmesi veya değiştirilmesi için iyi bir tanıtımdır. Eğer varsa deneyimli geliştirici , çoğunlukla ne olup bittiğini anlamak için yeterli aracılığıyla okumak mümkün olmalıdır.
Bir takım liderinin bakış açısından bir kod incelemesine bakın: orada uygulamanın ne yapması gerektiğini (iş mantığı) anlayan biri var, orada kodun ne yaptığını anlayan biri var (uygulama mantığı) ve muhtemelen birkaç kişi daha var Tüm bunların nasıl bir araya geldiğine dair bir fikri olması gereken orada.
Kesinlikle sadece gözden geçiren kişi olmamalısınız, ancak hakemlerden biri olmanız için birçok iyi neden var . Dili bilmemek, kod incelemesinde cevaplanması gereken birçok soru için bir engel değildir. Örnek olarak, bu sitedeki C # etiketindeki ilk 20 cevaplayıcıdan biriyim ve C # dilinde derlenmiş bir merhaba dünyası değilim.
Dili bilmeden paylaşabileceğiniz bazı uzmanlıklar:
Aynı zamanda yeni bir ürüne hız vermek için iyi bir yoldur. Yeni bir takıma katıldım, dilleri oldukça iyi kullandım, ancak etki alanını bilmiyordum. Kod incelemelerine katılmak, henüz bu satırlar boyunca çok fazla katkıda bulunmamama rağmen, etki alanı tarafını daha iyi öğrenmeme yardımcı oldu.
Sizin durumunuzda, diğer eleştirmenlerin bıraktığı yorumları gördüğünüz gibi yeni bir dilin deyimlerini öğrenmek için iyi bir yol olacaktır. Bunlar başka türlü öğrenmesi çok zor olan şeylerdir, çünkü tercümanınız kodunuzun pythonic olup olmadığını umursamaz.
Bu bir kazan-kazan durumu olabilir. Özellikle Değerli bir inceleme uzmanı olabileceğinizi söyleyeceğim kadarıyla: Çünkü Bilgi Laneti tarafından lekelenmemiş bir Python bakiresiniz .
Bunu şu şekilde düşünün: Eğer bir Python bakiresinin bile anlayabileceği kadar net bir kod varsa, o zaman iyi bir kod olmalıdır. Anlaşmakta zorlandığınız kısımlar yeniden işleme veya daha iyi yorum yapmaya aday olabilir.
Açıkçası, bu sizin için de faydalı olacaktır, çünkü ilerledikçe yeni bir dil seçiyor olacaksınız. (Umarım, size verilen kod, öğrenmek için iyi bir örnektir.) Bu düzenleme, "çalıştırılabilir sözde kod" olma ününe sahip bir dil olan Python için özellikle iyi çalışmalıdır. Deneyimli bir geliştiriciyseniz, bir Python programının özünü anlamada çok fazla zorluk çekmemelisiniz.
Dikkat , dile özgü gettolardan kaynaklanan böcekleri tespit etmeniz beklenmeyecektir . Ancak hata bulma, kod incelemelerinin tek amacı değildir. Başka bir şey olmazsa, meslektaşınızın kodunda ne gibi şeyler olduğunu bilerek, bilgi aktarımına katılırsınız.
Bir zamanlar bir taşeron tarafından yürütülen ve ciddi performans sorunları yaşadığı ortaya çıkan bir projeyi denetlemem istendi. Kritik faktörün tek bir Perl modülü olduğunu oldukça hızlı bir şekilde tespit ettim. Daha önce hiç Perl'e rastlamamıştım ve organizasyonda bunu bilen hiç kimsem yoktu, ben de onu anlamaya çalıştım. Ayrıntıları anlamadığım kadarıyla hiç bir zaman anlamadım, ancak kullandığı algoritmanın veri boyutunda ikinci dereceden olduğu açıktı ve bu da tüm sorunların nedeni oldu. Yani evet, tamamen anlamadığınız bir dilde kod okumak kesinlikle verimli olabilir. Bonus, bununla ilgili yeni hileler öğrenmenizdir.
Birkaç gözlem:
1) Deneyimli bir geliştiriciyseniz, Python'u (ya da en azından bilmeniz gereken kadar), sadece onunla çalışarak seçeceksiniz. Bu "yaparak öğrenme" bir durum olacak. İlk başta zor olacak, ancak dili seçtiğinizde kolaylaşacak. Bunu başka bir dil öğrenmek için bir fırsat olarak düşünün (insanlar "daldırma" yoluyla genellikle "yabancı" dilleri öğrenir)
2) SE sitelerinde "teknik olmayan" ancak dilbilgisi, iletişim ve mantık konusunda uzman bir çok değerli insan var. Bu tür insanlar deneklere "taze bir göz" getirir ve materyalde çok "bağlanmış" oldukları için başkalarının özledikleri bazı "daha ince" düzeltmeler yaparlar. Muhtemelen mantık ve genel programlama bilgisine sahip olmayan "teknik" olmayan (yani Python olmayan) becerileriniz için danışılıyorsunuz.
Çok fazla sayıda kod incelemesi yapmadıysanız, hemen hemen her kod inceleme deneyimi bir geliştirici olarak size yardımcı olacaktır. Bu sizin yetenekleriniz ve ihtiyaçlarınız ve takımın arasında iyi bir eşleşme gibi görünüyor.
Bu, incelemenin amacının ne olduğuna bağlı; yani ne demek etkili .
Hala bazı problemleri tespit edebileceksiniz. Gözden geçirmeleri gereken tek şey sizseniz ve sadece bir göz atmanızı umuyorlar, bazılarına ve muhtemelen bir şeyleri yakalamaya yardımcı oluyorlar, o zaman kesin. Birçok yapı kavramı, diller arasında benzerdir. Bir tanesi özellikle yorumu gözden geçirebiliyor. Belirli bir dilde olmayan bir programcının hala olanları iyi bir şekilde öğrenebilmesi gerektiği yeterince iyi yorumlanmalıdır. Değilse ... o zaman onlara yorumlarının nerede olmadığını söyleyebilirsiniz. Eğer bu kadar iyi yorumlanmışsa ... o zaman gerçekten neler olup bittiğini kodunu okumak yerine, neler olup bittiğinin açıklamaları aracılığıyla yapısının bir kısmını gözden geçirebilmelisiniz.
Ancak pek çok başka problemi de algılayamazsınız. Bu nedenle, gözden geçirmenizin, bunun iyi yapılmış / uygulanabilir bir program olup olmadığına dair ayrıntılı bir tespit olma niyetindeyse, hayal kırıklığına uğrayacaklardır.
Bu sonucun sizin yaptığınız zamana değip değmeyeceği büyük oranda projeye bağlıdır.