LOC / gün oranım çok yüksekse rahatsız olmam gerekir mi? [kapalı]


9

Şu anda bir indie proje üzerinde çalışıyorum, bu yüzden tam olarak insan testleri veya dış kod inceleme boyunca lüks yok - ancak, mevcut kodumda herhangi bir zor hata görmüyorum (onları gördüğüm gibi düzeltmek ve çoğu zaman sadece yanlış alan adları ve bir veya iki dakika içinde düzelttiğiniz şeyler) ve itmeden önce herhangi bir özelliği uyguladıktan sonra test ediyorum. Son zamanlarda LOC numaram günde yaklaşık 400 idi (kayıt için C #) ve sadece yeni sistemler uygulamakla kalmıyorum, aynı zamanda yazdığım şeyleri yeniden yazıyorum ve bazı hataları düzelttim.

Rahatsız olmalıyım? Durup bu tarihe kadar yazdığım ve yeniden düzenlediğim tüm kodu gözden geçirmem gereken işaret mi?


LOC'u nasıl ölçüyorsun? Visual Studio tarafından üretilen kodu hariç tutuyor mu, almıyor mu?
jk.

Kod klasörümdeki bu bash komutu ile: (./ -name '* .cs' -print0 | xargs -0 cat bul) | wc -l
Max Yankov

doğru böylece herhangi bir oluşturulan kodu dahil etmek gibi büyük olasılıkla designer.cs - Yazdığınız satır sayısı hakkında endişe olmaz
jk.

Genel olarak, evet, ancak bu belirli ortamla (Unity oyun motoru) durum böyle değil.
Max Yankov

1
Daha fazla eklemeden önce makul olabildiğince çok satır kod kaldırmaya çalışın . Minimal bir sistem üzerinde çalışmak alternatiften çok daha hoş.
Jon Purdy

Yanıtlar:


18

LOC muhtemelen en çok suistimal edilen metriklerden biridir ve sonuç olarak muhtemelen kod kalitesinin daha işe yaramaz ölçülerinden biri ve programlama çabasının daha da işe yaramaz bir ölçümüdür.

Evet, bu benim için cesur bir ifade ve hayır, seni kanıtladığım çalışmalara yönlendiremem. Ancak, ne kadar kod yazdığınızı düşünmeye başladığınızda, muhtemelen yanlış problemlerden endişe duyduğunuzu söyleyebilirim.

Öncelikle kendinize neyi ölçmeye veya kanıtlamaya çalıştığınızı ve bu kanıtın sadece ilgisiz olup olmadığını veya daha geniş bir kalite iyileştirmesini destekleyip desteklemediğini ve ekibinizden satın almak için bu bilgileri nerede kullanmanız gerektiğini sormanız gerekir. / yönetim bu konuda bir şeyler yapmak için.

LOC'u kullanma eğiliminde olduğum şeylerden biri de bir sağlık kontrolü. Kendimi çok fazla kod yazarken bulursam, LOC yerine yöntem başına LOC veya sınıf başına LOC ile daha fazla ilgileniyorum. Bu ölçümler olabilir daha fazla size kodu olmalıdır ne kadar iyi çarpanlarına hakkında biraz OKB hissediyorsanız yapmak üstlenmeden olduğunu göstergeler olmak. Çok büyük sınıflar olabilir küçük birkaç sınıfa refactored gerekir ve uzun çok satırlı yöntemleri olabilir çeşitli yöntemler, diğer sınıflara ayrılabilir gerekir, ya da kaldırılmış olabilir tekrar geçmeye işaret bile olabilir. Orada birkaç kez "olabilir" kelimesini kullandığımı fark ettim.

Gerçek şu ki, LOC sadece olası bir gösterge sağlar ve kodunuzun değişmesi gerekebileceğine dair gerçek bir garanti yoktur. Sorulması gereken asıl soru, kodun gerektiği gibi ve beklendiği gibi davranıp davranmadığıdır. Eğer öyleyse, bir sonraki sorunuz, kodu kolayca koruyup koruyamayacağınız ve gelecekte bakım masraflarınızı azaltmak için çalışma kodunda değişiklik yapmak için şimdi veya gelecekte zamanınız olup olmayacağıdır.

Çoğu zaman, çok sayıda kod daha sonra korumak için daha fazlasına sahip olacağınız anlamına gelir, ancak bazen iyi faktörlü kod bile yüzlerce kod satırına kadar uzanabilir ve evet, bazen kendinizi günde yüzlerce kod satırı yazarken bulabilirsiniz. Ancak deneyim bana her gün yüzlerce satırlık yeni bir kod çıktısını sürdürürsem, çoğu zaman kodun büyük bir kısmının uygun olmayan bir şekilde kesilip başka bir yerden yapıştırılma riski olduğunu ve kendi başına çoğaltma ve bakım, ama yine de bu bir garanti değil, bu yüzden elimdeki görevlerin nasıl tamamlandığına bağlı olarak deneyimim ve içgüdülerimin bana söylediklerine güveniyorum.

IMHO sorunuzda ortaya çıkmış olan ikilemden kaçınmanın en iyi yolu LOC'u unutmak ve TÜM zamanları yeniden gözden geçirmek. Önce kod testinizi yazın, başarısız olmak için uygulayın, geçmek için refactor, sonra orada nelerin yeniden düzenlenebileceğini görün ve kodu geliştirmek için. İşinizi zaten iki kez kontrol ettiğinizi bilerek görevden ayrılacaksınız ve gelecekte kendinizi ikinci olarak tahmin etmekten endişe etmeyeceksiniz. Gerçekçi bir şekilde konuşursak, açıkladığım gibi bir test ilk yaklaşımı kullanırsanız, tamamlanmış kodunuzdaki herhangi bir LOC / gün ölçümü, ölçülen miktarın 3-5 katını yazdığınız anlamına gelir ve bu çaba devam eden yeniden düzenleme işleminiz tarafından başarıyla gizlenir çabalar.


1
Günde +1 400 satır bir sorunun göstergesi olabilir, maalesef öğrenmenin tek yolunun 1 kişilik bir takımda zor olan kod incelemesi olduğunu düşünüyorum
jk.

Çok ayrıntılı bir cevap için teşekkürler :) Bence konuyu tamamen kapsıyor.
Max Yankov

@jk. Cevabım bağlamında yorumunuza hitap ettiğime inanıyorum. Yalnızken, kod kalitenizi korumanın en iyi yolu, kodunuzu yazma ve test etme konusuna odaklanmaktır. Sürekli bir yeniden düzenleme zihniyeti ile birleştirilen iyi bir test paketi, birçok açıdan kod incelemesi kadar iyi olabilir. İncelemeler olmadan yapmak istemediğimi, bunun yerine ürününüzün gereksinimleri karşıladığını ve gelecekteki değişikliklerin güvenle yapılmasına izin veren iyi bir test kapsamına sahip olmasını sağlamak için ikincil olmaları gerektiğini unutmayın. Kod incelemesi sırasında ilk sorum her zaman "Bunun için test nerede?" :-)
S.Robins

+1 LOC'nin kötü bir metrik olduğunu gösteren çalışmalara işaret edemeseniz de, LOC'yi bir metrik olarak kullandıkları için sorunlara yol açan çalışmaları bulmak kolaydır.
daramarak

LOC'nin işe yaramaz bir metrik olduğunu tamamen kabul edin. Bazı günler yüzlerce satır kod yazıyorum ve sorun değil. Bazı günler sıfır net. Bazı gün yaptığım tek şey kodu kaldırmak. :-)
Brian Knoblauch

5

Hiç de değil - bazı günler bulmak zor bir hata tamir ve sadece bir satır değiştirmek. Diğer günler yeni kod ekliyor ve birkaç bin satır yazıyorsunuz.

Günlük LOC, o gün için görevlerin 400 kod satırı ile gerçekleştirilebileceği dışında hiçbir şey söylemez.


2

Bu cevaplardan bazıları önemli değil, LOC'yi bir üretkenlik ölçüsü olarak kullanmıyorsunuz (eğer o zaman çok 'üretken' olmaktan endişe etmeyeceksiniz), aslında yaptığınız şey kod kaliteniz için endişeleniyor çünkü kod düşmanı bu endişelenmek için iyi bir şey.

Ne yazık ki, kod kalitesini bilmenin tek yolu kod incelemesidir, tek kişilik bir ekip olduğunuzdan, kodunuzu gözden geçirmeyi bıraksanız bile (ve gerçekten durdurmak istemiyorsanız, değil mi?) kendi kodunuz, kodunuzu inceleyen bir eş kadar açıklanmaz. Ben 400 LOC / gün anlamsızlık çalkalama olup olmadığını anlayabilmeniz için kodunuzu en azından bazılarını gözden geçirmek için başka birini almaya çalışırken öneriyoruz. Bir günlük kodun bağımsız bir incelemesi bile burada yardımcı olacaktır


1

Günde ürettiğiniz LOC sayısından rahatsız olmamalısınız.

Ama rahatsız olmalısın:

  • kodunuz test edilmediyse (örneğin, birim testleriniz yoksa)
  • yeni özellikler ekleme veya uygulanan özellikleri değiştirme konusunda sorun yaşamaya başlarsanız (bu, yeniden düzenlemenizin uygun olmadığı anlamına gelir)
  • deneyiminiz büyük değilse ve kodunuz gözden geçirilmezse (ekstra göz çifti problemleri tespit edebilir)

0

LOC 'resmi' bir üretkenlik ölçüsüdür, ancak değerine karşı argümanlar uzun olabilir (Ancak bir ORM, veritabanı tasarımı yanlışsa, tüm bu kod bölmeye gidebilir) 3 dakika içinde 50.000 satır kod oluşturabilir).

Tamamlanan% görev ile zaman tamamlanması planlanan% görev karşılaştırması ile ilerlemenizi ölçmenizi öneririz. Önemli olan budur. Müşteriler, LOC'ler için değil işletme değeri sağlayan çalışma kodu için ödeme yapar.

LOC ile ilgili bazı referanslar


ama verimlilik ölçüsü olarak LOC kullanmıyor
jk.

Evet, ama dediğim gibi, bu doğru bir önlem değil. Aynı şey "1,2,100 ortalama değeri" kullandığınızda bir ortalama olsun ama önyargılı ve doğru değil. LOC ile işler daha da kötüleşir çünkü her geliştirme ortamı ve araç seti farklı verimlilik rakamlarını yansıtabilir. Örneğin, LOC'lar kodun karmaşıklığını karşılaştıramaz, sadece uzunluğunu karşılaştırır. Orijinal yayını görmek isteyebileceğiniz 2 referansla değiştirdim.
NoChance

0

Ayrıca, kod kopyalarının sayısını da ölçüyor musunuz ?

Yüksek çıktı kodunuzda çok fazla kopyala ve yapıştır olduğundan dolayı endişelenmelisiniz.

Sebep: Kopyala ve yapıştır kaynağınızda bir hata olması durumunda, kopyala ve yapıştırın tüm kullanımlarını düzeltmek zor ve hataya açıktır


-1

Güzel fonksiyonel koda inanıyorsanız, bu sizin tek önleminiz olmalıdır

"Akıyor mu? Güzel görünüyor mu?"


3
tek önlem? nasıl çalışır? yeterince hızlı mı?
jk.

bu yüzden işlevsel dedim :)
Darknight
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.