Ben çok amaçlı işlevleri uygulamak gerekir?

3 Cevap php

Ben CodeIgniter kullanıyorum ve ben Diyelim ofset ayarlayabilirsiniz tüm tarifleri ve limiti diyelim getirir bir model var. Ben bir tek tarifi almak için bu işlevi uzatmak gerekir? Bu iyi bir uygulama mı?

3 Cevap

Amacınız anlaşılabilirliğini maksimize ederken kod tekrarını en aza indirmek olmalıdır. Bu iki oran genellikle. Sen az kod çoğaltılması ile sonuna kadar ancak bir işleve 12 isteğe bağlı parametreleri olabilir. Yani bazı genel ipuçları:

  • Üçüncü bir işlevi ortak işlevselliği ambalaj düşünün ve gerektiğinde daha sonra iki fonksiyonları hem diyebilirim;
  • Bir işleve fazla 3-4 parametre varsa, bir nesneyi ya da argümanları dizisi kullanarak;
  • Kod çoğaltma tamamen ortadan yok minimize edilmelidir. Bazen net çözüm kod çoğaltılması belirli bir miktarda içerir;
  • Bir işlevin veya nesnenin amacı açık olmalıdır. Bir parametre dayalı tamamen değişiklik ne ise o zaman büyük olasılıkla insanların kafasını karıştırmak için gidiyoruz.

Belirli bir durumda, ben gibi bir şey ile bitirmek isterdim hayal:

function get_recipes($offset, $limit) {
  // execute query and get resource
  $ret = array();
  while ($row = mysql_fetch_assoc($rs)) {
    $ret[] = build_recipe($row);
  }
  return $ret;
}

function get_recipe($id) {
  // execute query and get row object
  return build_recipe($row);
}

function build_recipe($row) {
  // construct a recipe object from the row
}

Genel olarak, açıklık için, bir fonksiyon tek bir görev yapmalıdır. Ancak, "N satırları alıyorum" tek bir görev IS - bile N == 1; ) - bu yüzden bu durumda, yani işlevi gerçekten "çok amaçlı" yok, nitelendirir söyleyebilirim

Bunun cevabı kolaydır.

Sadece o Worse is better hatırlıyorum