Это дурная привычка и очень назойливый практик цитировать Джошуа~d Блох , не понимая основной грунт нулевого фундаментализма.
Я ничего не читал Джошуа Блох, так что либо
- он ужасный программист
- или люди, которых я нахожу, цитируя его (Джошуа - это имя мальчика, которого я предполагаю), просто используют его материалы в качестве религиозных сценариев, чтобы оправдать свою программную религиозную снисходительность.
Как и в библейском фундаментализме, все библейские законы могут быть обобщены
- Любите фундаментальную идентичность всем своим сердцем и всем своим разумом
- Люби ближнего как самого себя
и так же фундаментализм разработки программного обеспечения может быть суммирован
- посвятите себя основополагающим основам со всей своей мощью программирования и умом
- и посвятить себя совершенству ваших коллег-программистов, как вы бы для себя.
Кроме того, среди библейских фундаменталистских кругов обращается сильное и разумное следствие.
- Сначала люби себя. Потому что если вы не любите себя сильно, то концепция «любите своего ближнего как самого себя» не имеет большого значения, поскольку «как сильно вы любите себя» - это базовая линия, над которой вы любите других.
Точно так же, если вы не уважаете себя как программиста и просто принимаете высказывания и пророчества некоторых программистов-гуру, не ставя под сомнение основы, ваши цитаты и опора на Джошуа Блоха (и тому подобное) не имеют смысла. И поэтому вы на самом деле не будете уважать своих коллег-программистов.
Основные законы программирования
- лень добродетель хорошего программиста
- Вы должны сделать свою жизнь программирования настолько простой, ленивой и, следовательно, максимально эффективной
- Вы должны сделать последствия и внутренности вашего программирования как можно более легкими, ленивыми и, следовательно, максимально эффективными для ваших соседей-программистов, которые работают с вами и подбирают ваши ресурсы программирования.
Константы шаблона интерфейса - плохая привычка ???
В какие законы фундаментально эффективного и ответственного программирования входит этот религиозный указ?
Просто прочитайте статью в Википедии о константах шаблона интерфейса ( https://en.wikipedia.org/wiki/Constant_interface ), и глупо оправдывать ее константы шаблона интерфейса.
Whatif-нет IDE? Кто на земле как программист не будет использовать IDE? Большинство из нас - программисты, которые предпочитают не доказывать наличие мачо-аскетического выживания, избегая использования IDE.
- Кроме того - подождите секунду сторонники микро-функционального программирования как средство не нуждающихся в IDE. Подождите, пока вы не прочитаете мое объяснение о нормализации модели данных.
Загрязняет пространство имен переменными, не используемыми в текущей области? Это могут быть сторонники этого мнения
- не знают и нуждаются в нормализации модели данных
Использование интерфейсов для принудительного применения констант является злоупотреблением интерфейсами. Сторонники таких имеют плохую привычку
- не видя, что «константы» должны рассматриваться как контракт. И интерфейсы используются для обеспечения или проецирования соответствия контракту.
Трудно, если не невозможно, преобразовать интерфейсы в реализованные классы в будущем. Хах .... хммм ... ???
- Почему вы хотите заниматься такой моделью программирования, как постоянные средства к существованию? Итак, зачем посвящать себя такой АМБИВАЛЕНТНОЙ и вредной привычке программирования?
Каковы бы ни были оправдания, НЕТ ДЕЙСТВИТЕЛЬНОГО ПРИЧИНА, когда дело доходит до ФУНДАМЕНТАЛЬНО ЭФФЕКТИВНОЙ разработки программного обеспечения, чтобы делегитимизировать или вообще препятствовать использованию констант интерфейса.
Неважно, каковы были первоначальные намерения и психические состояния отцов-основателей, которые разработали Конституцию Соединенных Штатов. Мы могли бы обсудить первоначальные намерения отцов-основателей, но все, что меня волнует, - это письменные заявления Конституции США. И каждый гражданин США несет ответственность за использование письменного литературного фундаментализма, а не неписаных оснований Конституции США.
Точно так же меня не волнует, какие «оригинальные» намерения основатели платформы Java и языка программирования имели для интерфейса. Меня волнуют эффективные функции, предоставляемые спецификацией Java, и я намерен использовать эти функции в полной мере, чтобы помочь мне выполнить фундаментальные законы ответственного программирования. Мне все равно, если меня воспринимают как «нарушающее намерение интерфейсов». Меня не волнует, что Гослинг или кто-то другой Блох говорит о «правильном способе использования Java», если только то, что они говорят, не нарушает мою потребность в ЭФФЕКТИВНОМ выполнении основ.
Основой является нормализация модели данных
Неважно, как ваша модель данных размещается или передается. Используете ли вы интерфейсы, перечисления или другие, реляционные или не-SQL, если вы не понимаете необходимости и процесса нормализации модели данных.
Сначала мы должны определить и нормализовать модель данных набора процессов. И когда у нас есть согласованная модель данных, ТОЛЬКО тогда мы можем использовать поток процессов его компонентов, чтобы определить функциональное поведение и блоки процессов в области или области приложений. И только тогда мы можем определить API каждого функционального процесса.
Даже аспекты нормализации данных, предложенные EF Codd, в настоящее время подвергаются серьезным и серьезным испытаниям. Например, его заявление о 1NF было подвергнуто критике как неоднозначное, смещенное и чрезмерно упрощенное, как и остальные его заявления, особенно в связи с появлением современных услуг передачи данных, технологий репо и передачи. IMO, заявления EF Codd должны быть полностью исключены, и должен быть разработан новый набор более математически правдоподобных утверждений.
Ярким недостатком Э. Ф. Кодда и причиной его несоответствия эффективному человеческому пониманию является его вера в то, что воспринимаемые человеком многомерные данные с изменчивыми измерениями могут быть эффективно восприняты посредством набора кусочных 2-мерных отображений.
Основы нормализации данных
Что Э. Ф. Кодд не смог выразить.
В рамках каждой последовательной модели данных это последовательный градуированный порядок достижения согласованности модели данных.
- Единство и идентичность экземпляров данных.
- спроектировать детализацию каждого компонента данных, при этом их гранулярность находится на уровне, на котором каждый экземпляр компонента может быть уникально идентифицирован и получен.
- отсутствие псевдонимов экземпляров. т.е. не существует средств, посредством которых идентификация производит более одного экземпляра компонента.
- Отсутствие примера перекрестных помех. Не существует необходимости использовать один или несколько других экземпляров компонента, чтобы способствовать идентификации экземпляра компонента.
- Единство и идентичность компонентов данных / измерений.
- Наличие сглаживания компонентов. Должно существовать одно определение, посредством которого компонент / измерение может быть однозначно идентифицирован. Который является основным определением компонента;
- где основное определение не приведет к раскрытию субразмерений или компонентов-элементов, которые не являются частью предполагаемого компонента;
- Уникальные средства компонентной разборки. Должно существовать одно и только одно такое определение сглаживания компонента для компонента.
- Существует один и только один интерфейс определения или контракт определения для идентификации родительского компонента в иерархической взаимосвязи компонентов.
- Отсутствие компонентных перекрестных помех. Не существует необходимости использовать элемент другого компонента, чтобы внести вклад в окончательную идентификацию компонента.
- В таких отношениях родитель-потомок определение идентификатора родителя не должно зависеть от части набора компонентов-членов дочернего элемента. Компонент члена идентичности родителя должен быть полной дочерней личностью, не прибегая к ссылкам на всех или на всех детей ребенка.
- Превосходное бимодальное или мультимодальное появление модели данных.
- Когда существует два определения кандидата для компонента, это является очевидным признаком того, что существуют две разные модели данных, смешанные в одну. Это означает, что существует несогласованность на уровне модели данных или на уровне поля.
- Область приложений должна использовать одну и только одну модель данных, согласованно.
- Обнаружить и идентифицировать компонентную мутацию. Если вы не выполнили статистический компонентный анализ огромных данных, вы, вероятно, не увидите или не увидите необходимости лечения мутации компонентов.
- Модель данных может иметь некоторые из своих компонентов мутировать циклически или постепенно.
- Режим может быть вращением элемента или вращением перемещения.
- Мутация ротации членов может быть явным обменом дочерних компонентов между компонентами. Или где совершенно новые компоненты должны быть определены.
- Транспозиционная мутация проявляется в виде размерного члена, мутирующего в атрибут, и наоборот.
- Каждый цикл мутации должен быть идентифицирован как отдельный мод данных.
- Версионизируйте каждую мутацию. Таким образом, вы можете извлечь предыдущую версию модели данных, когда, возможно, возникнет необходимость в лечении 8-летней мутации модели данных.
В области или сетке взаимообслуживающих компонентных приложений должна существовать одна и только одна согласованная модель данных, или существует средство, позволяющее модели / версии данных идентифицировать себя.
Мы все еще спрашиваем, можем ли мы использовать интерфейсные константы? В самом деле ?
На карту поставлены более важные вопросы нормализации данных, чем этот обыденный вопрос. Если вы не решите эти проблемы, путаница, которую, по вашему мнению, вызывают константы интерфейса, сравнительно ничто. Шиш.
После нормализации модели данных вы определяете компоненты как переменные, как свойства, как константы интерфейса контракта.
Затем вы определяете, что входит в введение значения, заполнение конфигурации свойств, интерфейсы, финальные строки и т. Д.
Если вы вынуждены использовать предлог для того, чтобы легче находить компонент, который можно диктовать для констант интерфейса, это означает, что у вас плохая привычка не практиковать нормализацию модели данных.
Возможно, вы хотите скомпилировать модель данных в выпуск vcs. Что вы можете вытащить четко идентифицируемую версию модели данных.
Значения, определенные в интерфейсах, гарантированно не изменяются. И поделился. Зачем загружать набор заключительных строк в ваш класс из другого класса, когда вам нужен только этот набор констант?
Так почему бы не опубликовать контракт модели данных? Я имею в виду, если вы можете согласованно и нормализовать это, то почему бы и нет? ...
public interface CustomerService {
public interface Label{
char AssignmentCharacter = ':';
public interface Address{
String Street = "Street";
String Unit= "Unit/Suite";
String Municipal = "City";
String County = "County";
String Provincial = "State";
String PostalCode = "Zip"
}
public interface Person {
public interface NameParts{
String Given = "First/Given name"
String Auxiliary = "Middle initial"
String Family = "Last name"
}
}
}
}
Теперь я могу ссылаться на контрактные ярлыки моих приложений таким образом, как
CustomerService.Label.Address.Street
CustomerService.Label.Person.NameParts.Family
Это смущает содержимое файла JAR? Как программист на Java, я не забочусь о структуре фляги.
Это представляет сложность для OSGI-мотивированного обмена времени выполнения? Osgi - чрезвычайно эффективное средство, позволяющее программистам продолжать вредные привычки. Есть лучшие альтернативы, чем osgi.
Или почему не это? Не существует утечки частных констант в опубликованный контракт. Все частные константы должны быть сгруппированы в закрытый интерфейс с именем «Константы», потому что я не хочу искать константы, и мне лень многократно набирать «private final String».
public class PurchaseRequest {
private interface Constants{
String INTERESTINGName = "Interesting Name";
String OFFICIALLanguage = "Official Language"
int MAXNames = 9;
}
}
Возможно даже это:
public interface PurchaseOrderConstants {
public interface Properties{
default String InterestingName(){
return something();
}
String OFFICIALLanguage = "Official Language"
int MAXNames = 9;
}
}
Единственная проблема с интерфейсными константами, которую стоит рассмотреть, это когда интерфейс реализован.
Это не "оригинальное намерение" интерфейсов? Как будто меня заботит «первоначальное намерение» отцов-основателей при разработке Конституции США, а не то, как Верховный суд будет толковать письменные письма Конституции США ???
В конце концов, я живу в стране свободных, диких и дом храбрых. Будь смелым, будь свободным, будь диким - используй интерфейс. Если мои коллеги-программисты отказываются использовать эффективные и ленивые средства программирования, обязано ли я по золотому правилу снизить эффективность программирования, чтобы они соответствовали их? Возможно, я должен, но это не идеальная ситуация.