Basit bir şifreleme egzersizi için Ruby kodu yazıyorum ve bu ikilemde sık sık çalıştım (bilmeniz gerekiyorsa egzersiz bir solitaire şifresidir). Bu, mantığı, tekrarlamayı ortadan kaldıran ve / veya hata fırsatlarını en aza indiren özlü, hatta yoğun ifadeler yerine işlevi okunabilir hale getiren açıklayıcı değişkenler ve tek adımlı ifadelerle doldurup doldurmamam gerektiği sorusudur.
En son örneğim: Programım girdi alıyor ve katı biçim yönergeleri nedeniyle, girdinin şifrelenmesi veya şifresinin çözülmesi gerekip gerekmediğini kolayca belirleyebilir. Basitleştirmek için, şifreleme anahtarı ve mesajı uyumlu olacak şekilde dönüştürüldükten / oluşturulduktan sonra, istenen çıktıyı elde etmek için anahtarı şifrelenmiş mesajdan çıkarmak veya şifrelenmemiş bir mesaja anahtar eklemek meselesidir (anahtarı şifreleme olarak düşünün, mesaj + şifreleme = kod; kod - şifreleme = mesaj). NEM ALMA konumu bana şifrelenmiş iletimi şifrelenmemiş iletimden farklı bir şekilde dönüştürmem gerektiğini söylüyor, böylece şifreleme anahtarını alan ve iletiye uygulayan işlevin hiçbir zaman ayırt edilmesi gerekmez. Ben fonksiyon bazı ifadeler iç içe eğer gerekir anlamına gelir ama mantık sağlam görünüyor. Ancak bu kod kolayca okunamaz.
Öte yandan, uygulama şifreleme veya şifre çözme belirlediğinde ayarlanan bir bayrağa dayalı olarak adlandırılan iki farklı işlev yazabilirim. Bu, okunması daha kolay olur, ancak bir iletiye şifreleme anahtarının uygulanmasının üst düzey işlevini çoğaltır (şifrelenmesine veya şifresinin çözülmesine neden olur).
Okunabilir koda mı yoksa özlü koda mı dayanmalıyım? Yoksa bu işlevselliği elde etmenin ve her iki ilkeyi de yerine getirmenin başka bir yolunu kaçırdım mı? Bu, projenin amacını göz önünde bulundurması ve bu amaca hizmet etmek için en iyi kararları vermesi gereken bir ölçekte mi konum?
Şimdiye kadar, okunabilir kod üzerinde özlü, KURU kod vurgulamak eğilimindedir.