Часто розробник стикається з вибором між двома можливими способами вирішення проблеми - одним, який є ідіоматичним і читабельним, та іншим, який є менш інтуїтивним, але може працювати ефективніше. Наприклад, у мовах на базі С є два способи помножити число на 2:
int SimpleMultiplyBy2(int x)
{
return x * 2;
}
і
int FastMultiplyBy2(int x)
{
return x << 1;
}
Першу версію простіше підібрати як для технічних, так і для нетехнічних зчитувачів, але друга може працювати ефективніше, оскільки зміщення бітів - це більш проста операція, ніж множення. (На даний момент припустимо, що оптимізатор компілятора не виявив би цього і не оптимізував, хоча це теж є міркуванням).
Як розробнику, що було б краще для початкової спроби?