Обновить
24
0
Голованов Владимир@Colwin

Senior Java Developer

Отправить сообщение
Фаулер хорошо понимает принципы проектирования, эт точно.
Кстати, это очень хорошо работает. Не нашел ни одного случая, где путем рефакторинга не удалось бы избавиться от комментариев и излишней запутанности кода.
Это не такая уж клиника, как может показаться.
Не каждый программист поддерживает чужие комментарии. Да и свои не всегда.
Поэтому, IMHO, лучше следовать мантре «Читай код».
Если вы, как менеджер по персоналу или владелец фирмы, вдруг читаете в чьем-то резюме слова о «5-6 лет опыта разработки», то знайте — их нельзя перевести как “опытный”. Это переводится так: чувствующий свою неуязвимость малолетка, с вероятностью 50 на 50 напишет вам кучу дерьма, в которой потом не разберется ни его команда, ни он сам, и которую он вероятнее всего не один раз будет переделывать. Но все это в порядке вещей — любой разработчик бывает подростком в своей профессиональной жизни.


Категорически не согласен с подобными высказываниями.
Здесь очень многое зависит от самоподготовки, и от того, что называть «5-6 лет опыта разработки». Я предпочитаю под этим понимать написание коммерческих приложений. Если же отсчитывать от точки начала программирования вообще… тогда, возможно, автор прав. И то не могу сказать с уверенностью, т.к. у многих программирование начинается с университета, а после выпуска они уже устраиваются на работу. Я шел немного другим путем, и программирование начинал до универа, поэтому мне сложно судить адекватно…

IMHO.
  @Test
  public void testSomeXmlGeneration() {
     // здесь подготавливаются данные для генератора
     String result = someModule.generateXML();
     Diff diff = new Diff(getResourceAsString("/expeced_data.xml"), result);
     assertTrue("XML результат не совпал", diff.similar());
     Tools.showXmlDiff(diff);
  }



assertTrue и Tools.showXmlDiff, IMNSHO, необходимо поменять местами.
Иначе в случае непрохождения теста, когда нам как раз и интересны различия в файлах, мы их не увидим, т.к. assertTrue выкинет исключение.
Зато у машины есть псевдослучайные генераторы случайных чисел.
И, в зависимости от характера случайной примеси, их можно считать более или менее случайными.
А сказать, насколько делека фантазия от случайных чисел, пока нельзя — не хватает знаний в данной области )
Согласен.
Компонентные движки на данный момент имеют два минуса:
1) Их компонентной базы не хватает под все множество задач.
2) Расширение компонентной базы обходится дорого, и, как правило, этим занимаются только те, кто разрабатывает framework.
На самом деле здесь не дублирование, а определение точек стыковки.
И, понятное дело, необходимо следить за соответствием имен в модели и в представлении.
К счастью, в наше время за соответствием следит IDE.
Причем дать верстать именно его макет


Это дааа. Вытаскивать из колес палки, которые сам себе туда засунул — пренепреятнейшее занятие, в итоге желание засовывать палки в колеса отпадает.
Да и программист не всегда верстальщик :-)
Конечно, базовые принципы он знать обязан, и проверить верстку должен уметь, мелкие фиксы сам сделать. Но сделать полноценную верстку — часто уже за пределами.
Не согласен.
Если разрешить использование в некоммерческих продуктах, то они могут очень быстро догнать коммерческий софт. В итоге коммерческий софт не успеет набрать обороты, т.е. даже не окупится.
Так что использование в некоммерческих продуктах логично разрешать также только после превышения срока действия патента.

Как, например, IE в свое время убил Netscape, хотя сам IE (в рамках Windows, логично) был бесплатен.
Или как FlashGet стал бесплатным довольно быстро после появления Download Master'а.
Между каждыми. Пример: A или B или С
А можно пример обратного преобразования в случае использования условий if-else?

    Numeric n = new Numeric().value(-10);
    Note r = new Note().bind(new Fork‹String›()
            .condition(new Toggle().less(n, -5))
            .then("Frost")
            .otherwise(new Fork‹String›()
                .condition(new Toggle().less(n, +15))
                .then("Cold")
                .otherwise(new Fork‹String›()
                    .condition(new Toggle().less(n, +30))
                    .then("Warm")
                    .otherwise("Hot")
                    )));
r.value("Hot");
System.out.println(n.value()); // Что будет выведено?
Мы говорим о разном.
Я согласен, что это ДНФ, в этом меня убеждать не нужно.

При этом в комментарии фокус на минусах такого представления, а не на соответствии терминологии.
Кстати, поискал подобный подход.
В частности, подобным образом задаются условия для сортировки писем в небезызвестном почтовике The BAT!
Я бы не сказал — очень уж много места отъедает.
Не говоря уже о том, что операция находится в отдельном блоке относительно аргументов, что очень сбивает с толку.
И — самое главное — семантика элементов управления не соответствует семантике условия, приходится переходить на другой уровень мышления.

Как пользователь я интуитивно формулирую выражение следующим образом:
«Хочу выбрать модели DIR-300 или DIR-320, полученные после 1.01.2011».
Соответственно, удобнее было бы формировать условие таким образом:

Дата получения | позже (не включительно) | 1.01.2011
И [
        Модель | содержит | [
                        DIR-300
                        ИЛИ DIR-320
                        ]
]


Следовательно:
  • Блоки И и ИЛИ разрешены не только для всей тройки целиком, но и для частей
  • И и ИЛИ используются в инфиксной форме (как в речи), а не в префиксной (функциональный стиль).
Вот только в виде ДНФ оно не всегда компактно выглядит, одно и то же условие приходится дублировать в нескольких ветках…

Например, A & (B | (C & D)) = A & (B | C) & (B | D) — условие B дублируется.
Удаленный рабочий стол — зачет! :-)
Кстати, нормальный фильм бы получился )
А то какое-то натянутое впечатление после применения команды «ping» для подбора пароля :-D
0.1% — не подскажете источник, из которого получена данная цифра? Или это ваше предположение?

Информация

В рейтинге
Не участвует
Откуда
Новосибирск, Новосибирская обл., Россия
Дата рождения
Зарегистрирован
Активность