Це погана звичка і дуже настирливий практик цитувати Джошуа ~ d Блох , не розуміючи основний грунт нульового фундаменталізму.
Я нічого не читав Джошуа Блоха, так само
- він жахливий програміст
- або люди, яких я вважаю, цитую його (Джошуа - це ім'я хлопчика, якого я вважаю), просто використовують його матеріал як релігійні сценарії, щоб виправдати свої програмні релігійні поблажки.
Як і в Біблійному фундаменталізмі, всі біблійні закони можна підсумувати
- Любіть фундаментальну ідентичність всім серцем і всім розумом
- Любіть свого ближнього, як самого себе
і так подібним фундаменталізмом програмного забезпечення можна підсумувати
- присвятіть себе основоположним нульовим основам усіма можливостями програми та розумом
- і присвятіть досконалість своїх колег-програмістів, як би ви самі.
Також серед біблійних фундаменталістських кіл притягується сильна і розумна наслідки
- Спочатку полюби себе. Тому що якщо ти не любиш себе сильно, то поняття "люби свого ближнього, як самого себе" не має великої ваги, оскільки "наскільки ти любиш себе" - це дата-рядок, над яким ти би любив інших.
Так само, якщо ви не поважаєте себе як програміста і просто приймаєте вимови та пророцтва якогось гуру-ната програмування БЕЗ сумнівів щодо основ, ваші цитати та покладання на Джошуа Блоха (тощо) не мають сенсу. А отже, ви насправді не поважали би своїх колег-програмістів.
Основні закони програмного програмування
- лінь - чеснота хорошого програміста
- ви повинні зробити своє програмування максимально легким, ледачим і, отже, максимально ефективним
- ви повинні зробити наслідки та неприємності свого програмування максимально легкими, ледачими і, отже, максимально ефективними для своїх сусідських програмістів, які працюють з вами та збирають ваші програми програмування.
Константи інтерфейсу - це шкідлива звичка ???
За якими законами принципово ефективного та відповідального програмування підпадає цей релігійний едикт?
Просто прочитайте статтю wikipedia про константи шаблону інтерфейсу ( https://en.wikipedia.org/wiki/Constant_interface ), і нерозумно виправдовує це проти констант шаблону інтерфейсу.
Без IDE без Whatif? Хто на землі як програміст не використовував IDE? Більшість з нас є програмістами, які вважають за краще не доводити наявності мачо-ессетичного виживання в реалізмі, уникаючи використання IDE.
- Також - зачекайте другого прихильника мікрофункціонального програмування як засобу не потребує IDE. Зачекайте, поки ви прочитаєте моє пояснення щодо нормалізації моделі даних.
Забруднює простір імен змінними, які не використовуються в поточному діапазоні? Це можуть бути прихильники цієї думки
- не обізнані та необхідність нормалізації моделі даних
Використання інтерфейсів для примусового виконання констант - це зловживання інтерфейсами. Прихильники таких мають погану звичку
- не бачачи, що до "константи" слід ставитися як до контракту. І інтерфейси використовуються для забезпечення або проектування дотримання договору.
Важко, якщо не неможливо, в майбутньому перетворити інтерфейси в реалізовані класи. Га .... хммм ... ???
- Чому ви хочете займатися такою схемою програмування, як ваша наполеглива життєдіяльність? IOW, навіщо присвячувати себе такій АМБІВАЛЕНТІ та поганій звичці програмування?
Якими б не були виправданнями, НІКОЛЬНО ВИМОЖЕНОГО ВИКЛЮЧЕННЯ, коли мова заходить про ОСОБЛИВО ЕФЕКТИВНУ програмну інженерію, щоб делегітимізувати або взагалі відмовити від використання констант інтерфейсу.
Не має значення, які були початкові наміри та психічні стани батьків-засновників, які створили Конституцію Сполучених Штатів. Ми могли б обговорити початкові наміри батьків-засновників, але мені все одно, що це письмові заяви Конституції США. І кожен громадянин США несе відповідальність за використання письмового літературного фундаменталізму, а не про неписані наміри Конституції США.
Так само мені не байдуже, які «оригінальні» наміри засновників платформи Java та мови програмування мали для інтерфейсу. Мене хвилює ефективні функції, які надає специфікація Java, і я маю намір максимально використовувати ці функції, щоб допомогти мені виконати основні закони відповідального програмування програмного забезпечення. Мені байдуже, якщо мене сприймають як "порушення намеру на інтерфейси". Мені все одно, що Гослінг чи хтось Блох каже про "правильний спосіб використання Java", якщо тільки те, що вони говорять, не порушує моєї потреби в ЕФЕКТИВНОМУ виконанні основ.
Основним є нормалізація моделі даних
Не має значення, як розміщується або передається ваша модель даних. Незалежно від того, чи використовуєте ви інтерфейси, перерахунки чи що-небудь подібні, реляційні чи без SQL, якщо ви не розумієте необхідності та процесу нормалізації моделі даних.
Спершу ми повинні визначити та нормалізувати модель даних сукупності процесів. І коли у нас є цілісна модель даних, ТІЛЬКИ ми можемо використовувати потоки процесів її компонентів для визначення функціональної поведінки та блоків процесу, поля чи сфери застосувань. І лише тоді ми можемо визначити API кожного функціонального процесу.
Навіть аспекти нормалізації даних, запропоновані EF Codd, зараз серйозно поставлені під загрозу. наприклад, його заява щодо 1NF була піддана критиці як неоднозначна, несогласована і надто спрощена, як і решта його тверджень, особливо щодо появи сучасних служб передачі даних, репо-технологій та передачі. IMO, висловлювання EF Codd повинні бути повністю вирвані та розроблений новий набір більш математично правдоподібних висловлювань.
Основним недоліком Е. Ф. Кодда та причиною його невідповідності ефективному людському розумінню є його переконання, що людські сприймані багатовимірні дані, що змінюються, можуть бути ефективно сприйняті через набір частинних двовимірних відображень.
Основи нормалізації даних
Що Е. Ф. Кодд не зміг висловити.
У межах кожної узгодженої моделі даних це послідовний градуйований порядок узгодженості моделі даних для досягнення.
- Єдність та ідентичність екземплярів даних.
- спроектувати деталізацію кожного компонента даних, завдяки чому їх деталізація знаходиться на рівні, коли кожен екземпляр компонента може бути однозначно ідентифікований та отриманий.
- відсутність псевдоніму. тобто не існує засобів, за допомогою яких ідентифікація створює більше одного примірника компонента.
- Відсутність перехресних примірників. Не існує необхідності використовувати один або кілька інших примірників компонента, щоб сприяти ідентифікації примірника компонента.
- Єдність та ідентичність компонентів / вимірів даних.
- Наявність компонента знежирення. Повинно існувати одне визначення, за яким компонент / вимір можна однозначно ідентифікувати. Яке основне визначення компонента;
- де первинне визначення не призведе до викриття субвимірників або компонентів-членів, які не є частиною призначеного компонента;
- Унікальні засоби дезаліювання компонентів. Повинно існувати одне, і лише одне, таке компонентне деассеативне визначення для компонента.
- Існує один, і лише один, інтерфейс визначення або контракт для ідентифікації батьківського компонента в ієрархічному взаємозв'язку компонентів.
- Відсутність перехресних компонентів. Не існує необхідності використання члена іншого компонента, щоб сприяти остаточній ідентифікації компонента.
- У таких стосунках батько-дитина ідентифікаційне визначення батьків не повинно залежати від частини набору компонентів-членів дитини. Компонентною особою батьків має бути повна ідентичність дитини, не вдаючись до посилань на будь-якого або всіх дітей дитини.
- Попереджуйте бімодальні або мультимодальні види даних моделі.
- Коли існує два кандидатних визначення компонента, це очевидна ознака існування двох різних моделей даних, змішаних як одна. Це означає, що існує невідповідність на рівні моделі даних або на рівні поля.
- Поле додатків повинно послідовно використовувати одну і лише одну модель даних.
- Виявити та визначити мутацію компонентів. Якщо ви не провели статистичний аналіз компонентів величезних даних, ви, мабуть, не бачите або не бачите потреби в лікуванні компонентної мутації.
- Модель даних може мати деякі її компоненти циклічно або поступово мутувати.
- Режим може бути обертанням члена або обертанням транспозиції.
- Мутація при обертанні членів може бути чіткою заміною дочірніх компонентів між компонентами. Або там, де мають бути визначені абсолютно нові компоненти.
- Транспозіційна мутація виявиться як мутація розмірного члена в атрибут, навпаки.
- Кожен мутаційний цикл повинен бути ідентифікований як окремий модальний дані.
- Універсалізуйте кожну мутацію. Такий, що ви можете витягнути попередню версію моделі даних, коли, можливо, виникає потреба в лікуванні 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 - надзвичайно ефективний засіб, який дозволяє програмістам продовжувати свої шкідливі звички. Є кращі альтернативи, ніж осгі.
Або чому цього не зробити? Немає витоку приватних констант у опублікований контракт. Усі приватні константи повинні бути згруповані в приватний інтерфейс з назвою "Константи", тому що мені не хочеться шукати константи, і я лінивий багато разів вводити "приватний заключний рядок".
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;
}
}
Єдине питання з константами інтерфейсу, що варто розглянути, - це коли інтерфейс реалізований.
Це не "первісний намір" інтерфейсів? Як би я піклувався про "первісний намір" батьків-засновників у розробці конституції США, а не про те, як Верховний Суд інтерпретуватиме письмові листи Конституції США ???
Адже я живу на землі вільної, дикої та домівки сміливих. Будьте сміливі, будьте вільні, будьте дикі - використовуйте інтерфейс. Якщо мої колеги-програмісти відмовляються використовувати ефективні та ледачі засоби програмування, я зобов’язаний золотим правилом знизити ефективність програмування, щоб відповідати їхнім? Можливо, і слід, але це не ідеальна ситуація.