Если Вы будете использовать instanceof
, делая Ваш equals
, то реализация final
сохранит контракт симметрии метода: x.equals(y) == y.equals(x)
. Если final
кажется строгим, тщательно исследуйте свое понятие объектной эквивалентности, чтобы удостовериться, что Ваши переопределяющие реализации полностью поддерживают контракт, установленный Object
класс.
Первый, на мой взгляд, гораздо более читабелен, однако второй технически требует меньшего анализа. Любое преимущество в скорости в этом случае, вероятно, было бы незначительным и действительно бессмысленным без профилирования.
Преждевременная оптимизация - корень всех зол. Делайте то, что упрощает чтение и сопровождение кода. Эффективность уступает место удобству обслуживания.
см. http://en.wikipedia.org/wiki/Optimization_%28computer_science%29#When_to_optimize для некоторых полезных советов по этому вопросу
Я согласен с Питером Бейли. Однако в представлениях я использую альтернативный синтаксис для операторов и предпочитаю короткие теги (особенно для эха). Таким образом, приведенный выше пример будет выглядеть так:
<table>
<? foreach($lotsofrows as $row): ?>
<tr>
<td><?= $row['id']; ?></td>
</tr>
<? endforeach; ?>
</table>
Я считаю, что это предпочтительный стандарт для Zend Framework.
Преимущества первого
Преимущества второго
Если у меня много HTML в данной подпрограмме PHP (например, представление MVC), то я определенно использую второй метод. Но я форматирую его по-другому - я строго полагаюсь на теговую природу разграничения PHP, то есть делаю разделы PHP максимально похожими на HTML-теги
<table>
<?php foreach($lotsofrows as $row) { ?>
<tr>
<td><?php echo $row['id']; ?></td>
</tr>
<?php } ?>
</table>
То, что вы пишете, очень надежно. PHP можно использовать как язык программирования или как простой и мощный язык веб-шаблонов. Смешивание этих двух способов использования очень, очень плохая практика и будет ужасно поддерживать в долгосрочной перспективе.
Итак, второй стиль более удобен в шаблонах с большим количеством html-разметки и небольшими пятнами кода, во-первых, для «чистого» программирования на php .
Лучшим из них является механизм шаблонов.
Но я думаю, что эхо намного чище и читабельнее (по крайней мере, в этом случае - как указано в комментариях, это зависит от обстоятельств), чем открывающие и закрывающие теги повсюду (хотя я не слишком много знаю о внутреннем устройстве PHP, чтобы сказать, какой из них быстрее).
Первый вариант более читабелен с точки зрения программирования, но второй позволяет вам открывать файл в некотором WYSIWYG HTML редактор и изменить дизайн страницы.
Я предпочитаю второй вариант, потому что гораздо легче сказать вашему дизайнеру, что «эта часть страницы будет вести себя так», чем «этот фрагмент кода будет вести себя так»