Это вопрос соглашения. Действительно важная вещь - последовательность.
Большинство (но не все) разработчики предпочитают пробелы вкладкам, потому что они выглядят одинаково, независимо от какого-либо конкретного текстового редактора / установки ide. http://www.ecyrd.com/JSPWiki/wiki/WhyTabsAreEvil
Два пробела над четырьмя также являются предметом соглашения. Код Ruby нацелен на минимизацию лишних символов, и я полагаю, что дополнительные пробелы идут вразрез с этой тенденцией.
Антишаблоны - это определенные шаблоны в разработке программного обеспечения, которые считаются плохим программированием.
В отличие от шаблонов проектирования , которые представляют собой общие подходы к общим проблемам, которые были формализованы и обычно считаются хорошей практикой разработки, антишаблоны противоположны и нежелательны.
Например, в объектно-ориентированном программировании идея состоит в том, чтобы разделить программное обеспечение на небольшие части, называемые объектами. Антипаттерн в объектно-ориентированном программировании - это объект God , который выполняет множество функций, которые лучше разделить на разные объекты.
Например:
class GodObject {
function PerformInitialization() {}
function ReadFromFile() {}
function WriteToFile() {}
function DisplayToScreen() {}
function PerformCalculation() {}
function ValidateInput() {}
// and so on... //
}
В приведенном выше примере есть объект, который делает все . В объектно-ориентированном программировании было бы предпочтительно иметь четко определенные обязанности для различных объектов, чтобы код оставался менее связанным и, в конечном итоге, более удобным в обслуживании:
class FileInputOutput {
function ReadFromFile() {}
function WriteToFile() {}
}
class UserInputOutput {
function DisplayToScreen() {}
function ValidateInput() {}
}
class Logic {
function PerformInitialization() {}
function PerformCalculation() {}
}
Суть в том, что есть хорошие способы разработки программного обеспечения с широко используемыми шаблонами ( ), но есть также способы разработки и внедрения программного обеспечения, которые могут привести к проблемам.
Шаблон - это идея того, как решить проблему определенного класса. Анти-шаблон - это идея о том, как не решить эту проблему, потому что реализация этой идеи приведет к плохому дизайну.
Пример: «шаблон» будет использовать функцию для повторного использования кода, «анти-шаблон» будет быть использовать копипаст для того же. Оба решают одну и ту же проблему, но использование функции обычно приводит к более удобочитаемому и удобному в сопровождении коду, чем копирование и вставка.
Анти-шаблон - это способ не решить проблему. Но это еще не все: это также способ, который часто можно увидеть в попытках решить проблему.
Как и в случае с шаблоном проектирования , анти-шаблон также является шаблоном и повторяемым способом решения определенной проблемы, но в неоптимальный и малоэффективный способ.
Если вы действительно хотите изучать AntiPatterns, получите книгу AntiPatterns (ISBN-13: 978-0471197133).
В нем они определяют: «Антипаттерн - это литературная форма, описывающая часто встречающееся решение проблемы, приводящее к явно отрицательным последствиям»
. плохая практика программирования, но не распространенная - ограничивается одним приложением, одной компанией или одним программистом, она не соответствует части "Pattern" определения AntiPattern.
Распространенный способ навести беспорядок. Например, класс god / kitchennsink (делает все).
Интересно, что данный способ решения проблемы может быть как шаблоном, так и анти-шаблоном. Синглтон - яркий тому пример. Он появится в обоих наборах литературы.
Анти-шаблоны - это обычные способы, которыми люди склонны неправильно программировать, или, по крайней мере, не очень хороший способ.