Yakın zamanda yapılan bir hata düzeltmesi, diğer takım üyeleri tarafından yazılan kodu gözden geçirmemi istedi, bu da (C #):
return (decimal)CostIn > 0 && CostOut > 0 ? (((decimal)CostOut - (decimal)CostIn) / (decimal)CostOut) * 100 : 0;
Şimdi, tüm bu yayınlar için iyi bir neden var, bunu takip etmek hala çok zor görünüyor. Hesaplamada küçük bir hata vardı ve sorunu çözmek için açmam gerekiyordu.
Bu kişinin kodlama stilini kod incelemesinden biliyorum, yaklaşımı ise daha kısa olması neredeyse her zaman daha iyi. Ve elbette orada değer var: hepimiz gereksiz yere karmaşık birkaç iyi yerleştirilmiş operatörle bağdaştırılabilecek koşullu mantık zincirleri gördük. Ancak, takip eden operatör zincirleri tek bir ifadeye tıkılıp tıkandığında benden daha usta.
Bu, elbette, sonuçta bir stil meselesidir. Ancak, kodun kısalıklığı için çabalamanın yararlı olmayı kestiği ve anlama için bir engel teşkil ettiği noktasını tanımak için herhangi bir şey yazıldı mı ya da araştırıldı mı?
Vuruşların nedeni Varlık Çerçevesi. Db'nin bunları null tipinde saklaması gerekiyor. Ondalık? C # 'da Ondalık değerine eşdeğer değildir ve kullanılması gerekir.
CostOut
eşit Double.Epsilon
ve bu nedenle sıfırdan büyük. Fakat (decimal)CostOut
bu durumda sıfır ve sıfır hatayla bölünme var. İlk adım, kodu doğru almak olmalı , ki bence değil. Düzeltin, test senaryoları hazırlayın ve sonra zarif hale getirin . Şık kodlar ve kısa kodların ortak noktaları vardır, ancak bazen kısalık zarafetin ruhu değildir.