Бухгалтерия / Говнокод #12325 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
Word.FormFields("Data").Result  = СокрЛП(?(ДатаЧисло(ДатаДок2)<10,"0","")+ДатаЧисло(ДатаДок2)); 
Word.FormFields("Manth").Result = СокрЛП(МесяцПрописью(ДатаДок2)); 
Word.FormFields("God").Result   = СокрЛП(ДатаГод(ДатаДок2));

взято из конфигурации одного автодилера, особенно порадовали имена частей даты

Запостил: VladC VladC, (Updated )

Комментарии (14) RSS

  • А в чем фикальность? В том, что у особи с фантазией проблема? Нах такие экземпляры!!!
    Ответить
    • 1. ну хотя бы в том, что выражение:
      СокрЛП(?(ДатаЧисло(ДатаДок2)<10,"0","")+ ДатаЧисло(ДатаДок2))
      может быть заменено на:
      Формат(ДатаЧисло(ДатаДок2),"Ч(0)2")
      2. его функция МесяцПрописью возвращает месяц прописью в родительном падеже, весь этот трёхстрочный выперд можно было бы написать вообще просто:
      Word.FormFields("Date").Result = Формат(ДатаДок2,"ДДДММММГГГГ");
      если бы он в вордовском шаблоне сделал дату одним полем, а не тремя.
      Ответить
      • +2. ну и конечно же отпала бы необходимость в функции МесяцПрописью, итого вместо 32 строк одна, так разве это не говнокод?
        Ответить
  • Word manthan literally means deep contemplation, churning of facts, analysis aimed at solution or conclusion.
    Может это?
    Ответить
  • Редко кто осиливает форматирование чисел.
    Ответить
  • Почувствуйте разницу: хваленый формат красиво запишет результат в одной ячейке, в то время как у автора он помещается аж в целых три. Может, прежде чем критиковать, стоит подумать, почему реализовано именно так?

    PS: А формат сможет выдать что нибудь вроде ["21"_декабря_2012г.]??? С кавычками и подчеркиваниями (блэкджеком и шлюхами, блин)
    Ответить
    • 1. дело не только в том, что результат помещается в 3 ячейки, а ещё и в том, что незнание функции формат вынудило автора писать функцию возвращающую месяц прописью. можно конечно искать какой-то глубокий смысл в выводе даты по частям, но я не стану,уверен, что смысла нет ;). ну и плюс ко всему дело ведь не только в результате, но и в способе достижения, если вы не видите разницы между тем чтобы написать одну строку кода вместо 32 для получения одного и того же, то может пора подумать о смене профессии ;)?

      2. функция формат используется для форматирования значений, то что вы написали: "["21"_декабря_2012г.]" нельзя назвать просто "датой", это дата в квадратных скобках, достигается элементарной конкатенацией строк:
      "["+Формат(НекаяДата,"ДДДММММГГГГ")+"]". и код опять уже уместился в одну строку, просто стал длиннее на несколько символов 😉
      Ответить
      • В квадратные строки взято то, что надо получить форматом, дабы отделить от знаков вопроса. Их не учитываем, конкатенацию опускаем, остается число в кавычках и подчерки в месяце
        Ответить
        • PS: Итого, остается только придирка к МесяцПрописью, где, с Ваших слов, 32 строки кода. Тут их не видно. Если автор не совсем бабуин, то в этом методе мог использовать именно формат, возвращающий ТОЛЬКО наименование месяца, с приведением его к нижнему регистру (насколько помню, названия месяцев идут с заглавной буквы). Т.О., МесяцПрописью - просто удобная запись двух безобидных действий. Повторяю, в приведенном куске кода этого не видно, это Ваши придирки и не более того. И я сильно сомневаюсь, что для дефекации собственного кода Вы досконально анализируете каждую строку. Так что поищиче фекалии в своих произведениях
          Ответить
          • кстати поиском фекалий обожаю заниматься, в нашей среде это называется рефакторингом, хотя вам это слово конечно же не знакомо 😉
            Ответить
        • это так ... по вашему, уводить вопрос в сторону ;). в том коде, который я привёл, не стояла задача выводить дату в кавычках и с подчёркиваниями вместо пробелов, это вы уже тут просто хуйней страдать начали, т.к. именно по этому высеры вам сказать просто нечего ;). по существу: именно такую строку функцией Формат получить нельзя, т.к. она не умеет выдавать значения даты с произвольными разделителями, но всё опять же делается достаточно просто конкатенацией и заменой строк, пример приводить не буду, уверен, что вы уже знаете как, а если нет, то тем более не стану, т.к. всё равно не поймёте ;).
          Ответить
    • Вот так может, например:
      Формат(НужнаяДата, ДФ='``dd`` _ММММ_ гггг')

      Конечно, не совсем кавычки, но выглядит похоже. Да и СтрЗаменить никто не отменял.
      Да, дело в 8. Хотя и для 7.7 есть пути.
      Так что претензия к формату необоснована. А вот к автору кода по поводу размещения в трех полях - очень даже имеет основания. И, если верить VladC, то он (автор кода) таки совсем бабуин - отдельная функция для вывода месяца прописью просто не имеет смысла.
      И уж если совсем грамотно подходить к делу, то форматирование должно быть настроено непосредственно в ячейке конечного документа - отделяем мух от котлет, т.е. данные от их представления.
      Ответить

Добавить комментарий

Где здесь C++, guest?!

    А не использовать ли нам bbcode?


    8