Обновить
25
0.1
ApeCoder@ApeCoder

Разработчик

Отправить сообщение
Я использую методы не как средство сжатия кода, а как способ разбить его на логические куски.

По ссылке написано про модули, а не по методы.
MS использует термин IT Pro примерно в этом значении. например, для девелоперов — MSDN, для IT pro — TechNet. К сожалению, не нашел формального определения.

www.nothingbutsharepoint.com/sites/itpro/Pages/SharePoint-What-in-the-world-is-an-ITPro.aspx

sympmarc.com/2011/06/16/whats-the-difference-between-an-it-pro-and-a-dev/
Ну за версию экономики и модель атома не ручаюсь, а всякое типа — дать название группы полей в таблице или предложить названия поля получалось.

При формализации этого никак не избежать. Надо называть вещи которые ранее были смутным пятном в мозгу эксперта.

Если эксперт сам все отлично формализовал и вербализовал, я сомневаюсь, что у него будут «длинные методы» в описаниях.

Поэтому и прошу примера. То есть я согласен, на 100% сказать, что ВСЕ методы длинее, допустим, полэкрана плохие нельзя, но для длинных методов нужно хорошее осознанное обоснование и они являются исключением.
«аборигенский танец из ста хаотичных безсистемных действий» это не пример метода (нету кода). Хотелось бы понять зачем этот танец кодируют в виде метода, что ожидается в результате какие его подробности существенны, а какие нет (нельзя ли его заменить на sum(random(действие) for x in range(100))).

Разбор сайта пример понятный и я могу представить примерно что-там нужно а что нет, а аборигенский танец — не очень. Вы действиетельно занимались программированием аборигенов или пример нереалистичный?
«Сложить m между собой n раз» — это умножение. На его языке это звучит так:
«Прибавить к двум два. К результату еще прибавить два, потом еще раз прибавить два.»

При наличии такого метода, вам не придётся напрягать лишнюю извилину мозга, когда заказчик произносит: «и тут нужно сложить степень двойки этого полиномиального коэффициента между собой записанное в таком-то файле количество раз».


Я не думаю, что это реалистичная модель закачика, не знающего умножения. Это раз. Во вторых, программисты часто обладают более развитым абстрактным мышлением, чем заказчики. Нельзя ли предложить заказчику более эффективную теорию его предметной области и если он согласиться, использовать ее?

После перечисления этих 5ти методов написано… и ещё подобные методы, просто я не стал перегружать статью, отметив, что процесс торговли можно всё усложнять и усложнять, в результате чего количество сущностей на одном уровне абстракции разрастётся, разрастётся и метод, содержащий сейчас 5 строк кода. Можно наращивать метод неограниченно.

Тогда получается, что пример не подходит: для иллюстрации того, что может быть метод больше 50 строк приводится метод длинной в 5 строк.

Я думаю, человеку не свойственно оперировать длинными списками и он все равно его как-то классифицирует (помните правило 8+-2).

Не могли бы вы привести более длинный пример в комментарии?
Я так и понял. Можете на ОО языке (хотя бы на UML) описать как связаны понятия

Поставщик;
Закупка;
Аукцион;
Протокол;
Дата последнего изменения.
) Это похоже на типичный пример последовательной связности (sequential cohesion).

Имхо тут не последовательная связанность — так как часть шагов независимы (могут быть разбиты на параллельные таски)
Если клиент не знает что такое умножение и пользуется километровыми простынями из сложений, будете ли вы использовать абстракцию умножения?
То типа того:

class Закупка
{
      Дата датаИзменения;
      Аукцион аукцион;
      List<Протокол> протоколы;      
}

class SiteParseResult{
     Запкупка закупка;
     Лоты лоты;
}

SiteParseResult parseSite()
{
    return new SiteParseResult(){
           закупка = parseЗакупка();
           лоты = parseЛоты();
    )
}


Давайте пример на псевдокоде
Хотелось бы разобрать конкретный пример все-таки. Можно привести такой пример?

Для меня красная тряпка когда добавляют комментарии в длинный метод разбивая его на части типа:

// разбор заказов
.. 5 шагов..
// разбор лотов
... 8  шагов ...


Вместо того, чтобы просто разбить на более короткие методы
1) Узнать информацию о поставщике;
2) Узнать информацию о лотах закупки;
3) Узнать информацию о аукционе закупки;
4) Узнать информацию о протоколах закупки;
5) Узнать информацию о последней дате изменения состояния закупки.


Я думаю, если подумать, такое можно вполне разбить на фазы: у нас есть данные, которые имеют структуру например

Аукцион
   - лоты 
   - закупка
       - дата изменения состояния
       - протоколы



Соответственно эту иерархию можно перенести в код.

Интересно было бы разобрать реальный пример.
в choco зависимости уже есть
Я не думаю, что программа может дать обратную связь. Можно поучаствовать в livemocha.com — там носители проверяют (если повезет :))
Можно сравнить с LinguaLeo?
Вы сейчас назвали несколько сущностей: OneGet, NuGet, Chocolatey. Что из этого что?

Oneget — обший интерфейс для менеджеров пакетод для винды. Пока имеет единственный «драйвер» для chocolatey
NuGet — менеджер пакетов для Visual Studio — работает для библиотек и расширений IDE
Chocolatey — сторонний менеджер пакетов на основе Nuget. Обеспечивает комманданый интерфейс, набор примитивов для скачивания инсталляции и деинсталляции софта. Пользуется форматом nuget для описания зависимостей и свойств пакета, только для choco в состав пакета должны входить powershell скрипты для инсталляции и деинсталляции.
Там вообще сравнение с GO а не с текущим фаерфоксом :)
У power shell есть еще ISE — графическая оболочка
А. Я почему-то подумал, что двоичная. Правда, никогда не видел, чтобы использовали 8ричную запись — 16ричную сколько угодно, даоичную — бывало, но не восьми…

Информация

В рейтинге
4 762-й
Откуда
Россия
Дата рождения
Зарегистрирован
Активность