| — | О цветах и юбках |
Johnny Cash - Hurt (HQ - High Quality) (via metkere)
Но госшкола лжет. Всегда лжет, потому что построена на страхе и насилии. Лжет, например, что этот мальчик в 7-ом классе. Точно так же она лжет миллионам родителей, что их дети в 8-ом, 10-ом или 11-ом классах. Но это то же, что врач, скрывающий наличие серьезной болезни и выписывающий справку о полном выздоровлении.
Имел счастие читать государыне императрице, у камина, стоя на коленях перед ея императорским величеством; и по окончании онаго чтения удостоился получить из собственных ея императорского величества рук всемилостивейшую оплеушину.
Сейчас я вам расскажу как строят джаваисты.
Изначально закладывается такая архитектура, в которой много слоев и абстракций. В теории одна маленькая финтифлюшка может работать на отдельном кластере, который спрятан под горой в бронерованном бункере в Швейцарии, а другая загогулина может вертеться на чьем-то мобильном телефоне. Но что самое крутое, программисту который будет дергать за шнурок А на загогулине, который через 3 брокера и 5 проксей подключен к звонку Б на финтифлюшке, не надо ни о чем беспокоиться, потому что все прозрачно и абстрактно!
Желательно, чтобы все было в XML. Настройки всего, даже настройки того, как читаются другие настройки. Настройки желательно делать иерархическими, с переопределением всего и вся. Например, если у вас есть файл настроек с именем компьютера, то он должен гарузиться первым, потом надо обязательно проверить нет ли чего в реестре, а потом позвонить на специальный сервер конфигурации и ещё немножко настроек взять оттуда. Ни в коем случае при отладке нельзя давать понять откуда какой-то конкретный параметр приплыл!
Если какие-то настройки не в XML, то надо обязательно их туда загнать. Можно даже иногда в XML писать немножко кода, который потом будет компилироваться на ходу.
Нельзя никакие функции звать напрямую, обязательно нужны сервис брокеры. Когда в цепочке слишком много брокеров, можно для разнообразия поставить прокси.
Dependency Injection обязательно надо делать как можно запутанее, чтобы новички потом под собой мочили стулья от неожиданности, когда у них код, удаляющий базу, вдруг откуда-то чудесно вызвался.
Реализовывая свои фичи, желательно ломать поведение стандартных библиотечных, на замену которым это пишется. Например, вываливать эксцепшн на три экрана, когда пользователь нажал кнопку “назад” в браузере. А еще лучше перепутать сессии и дать этому пользователю данные другого собрата по несчастью.
Вот например взялся джаваист складывать два числа, скажем 2 + 2.
Надо несколько уровней абстракции. Один - на цифры. Вдруг сегодня арабские, а завтра римские надо будет или вообще клинопись?
Второй уровень - на тип операции. Это сегодня мы складываем, а вдруг завтра надо будет лексический парсинг Клингона делать, пусть будет, про запас.
Третий - на тип пространства. Это сейчас оно линейное, а завтра ну как надо будет мнимые числа складывать? Записываем.
Это все конечно должно через брокеры друг с другом разговаривать, быть потокобезопасным и масштабируемым, чтобы при желании эту операцию можно было запустить на распределенном кластере из маков, пи-си и приставок сони плейстешн.
Об ошибках тоже не надо забывать. Надо чтобы при ошибке приложение вылетало с малопонятным сообщением типа “ERR402A77: Could not parse node ‘XlmSignal’”, и чтобы ошибку было хрен отловить отладчиком, т.к. она возникла в сгенерированном автоматически коде (см выше XML).
Примерно вот так.
