1. C++ / Говнокод #16173

    +13

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    /////////////////////////////////////////////////////////////////////////////////////////
    template< typename  TT_multimap_type >
    void  copy_val_vect_into_multimap_with_mapped_val_ordering_with_comparator
        (
            T_val_vect                                  const   &   val_vect,
            TT_multimap_type                                    &   multimap,
            T_rand_rev_compare_val_with_comparators    const    &   swap_compare_val
        )
    {
        T_insert_with_ordering_in_multimap_with_comparator< TT_multimap_type >
            insert_with_ordering_in_multimap_with_comparator
                (
                    multimap,
                    swap_compare_val
                );
     
        std::for_each
            (
                val_vect.begin    (),
                val_vect.end      (),
                insert_with_ordering_in_multimap_with_comparator
            );
    }
    /////////////////////////////////////////////////////////////////////////////////////////

    http://goo.gl/1oiTBt
    вырвиглазный code-style

    Запостил: absolut, 16 Июня 2014

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

    • Всё что нужно — запихнуть данные из одной мультимапы в другую поменяв местами ключ и значение?
      Имена конечно убивают.
      Ответить
      • Изначально ТС вроде хотел сортировку мапы по своему критерию.
        Там не только имена, но ещё и пробельчики-табуляторы.
        Помнится Тарас тоже как-то такое форматирование демонстрировал тут.
        Ответить
    • > copy_val_vect_into_multimap_with_mapped_ val_ordering_with_comparator
      Объективсишненько...
      Ответить
      • только там обычно кэмел-кейс
        copyValVectIntoMultimapWithMappedValOrderingWithComparator
        Ответить
        • читая мануал к емаксу, нашёл забавный minor mode, называется glasses-mode.
          Он визуально превращает идентификаторы вида killMePlease в идентификаторы вида kill_Me_Please или даже kill_me_please. Содержимое файла при этом, разумеется, не меняется.
          Ответить
          • > Содержимое файла при этом, разумеется, не меняется.
            Я надеюсь, что писать в таком режиме нельзя?
            Ответить
            • Почему нет?
              Ответить
              • Потому что может рассинхрон получиться, если видя some_shit (которое на самом деле someShit) набрать other_shit, и оно так и останется... Или там задается из какого представления в какое перегонять при просмотре, а при наборе происходит обратное преобразование?
                Ответить
                • Нет, обратного преобразования не происходит ButIfITypeLikeThis it shows "But_If_I_Type_Like_This".
                  Ответить
                  • Тогда, имхо, лучше бы запретили редактировать в таком режиме.
                    Ответить
                    • Это идеология студио-клипсо-тырпрайз пользователей. Зачем запрещать? Если мне нужно, я могу сам перевести файл в режим только для чтения. Более того, режим "только для чтения", это не более, чем рекомендация, я всегда смогу его изменить. Не смогу записать файл потом? - Окей, мои проблемы, я знаю, что делаю.
                      Ответить
                      • Настоящие джигиты никогда не пользуются ремнями безопасности :)
                        Ответить
                        • Нет, это просто другой подход к разработке програм. Человек, который пользуется Эмаксом знает что делает, не нужно его заставлять ложкой стейк есть чтобы не порезался. Практика показывает, что не смотря на вседозволенность это не приводит к большему количеству ошибок. Как правило, даже наоборот.
                          Ответить
                          • >ложкой стейк есть
                            Думаю, что за бред... о потом: стейк это же не стек. Хотя ложкой всё равно не удобно.
                            P.S. Нет никакой ложки ©
                            Ответить
                          • Даже если я 100% знаю что делаю всегда приятно иметь подушку безопасности
                            Ответить
                            • Нет, не всегда. Пример: в Клипсе, в проекте можно указать программу для компиляции проекта (если выбрать кастомный билдер), но Клипс не позволяет просто напечатать имя программы, потому что печатающий может ошибиться. Программу нужно обязательно найти в файловой системе. Поэтому, нельзя например, указать g++, или там, javac в качестве такой программы, нужно обязательно /usr/share/bin/java-openjdk-7.0.1/bin/javac и ебаться с этим каждый раз при переносе проекта / перекомпиляции СДК и т.д. Потому что мудак, который его спроектировал решил анально оградить пользователей от самих себя.
                              Ответить
                              • ну да, это пиздец.
                                Ответить
                              • > javac или g++
                                И юзеру придется... добавлять пути к папкам bin этих сдк в path сборочного окружения. Поменял шило на мыло.
                                Ответить
                                • Это ультимативно противоречие между либертарианской позицией (свобода = неотъемлиое право, заставлять следовать каким-либо нормам, даже если это "во благо" = насилие над личностью) и любым проявлением тоталитаризма, в том числе и социализма (ради довольствия большинства можно пожертвовать свободами некоторых, можно запретить ущерб самому себе, т.как это так же, косвенно, наносит ущерб остальным).

                                  Мое мнение такое, что тоталитаризм должен включать в себя социальный контракт для легитимации того, что делает, и это так же распространяется на поведение интерфейса програм: програма должна открыто заявлять, что узурпирует какие-то свободы пользователя. Возможно во благо этому пользователю, но он должен согласиться с контрактом. Я не согласен с контрактом предлагаемым тыр-тырпразным стилем Клипса, и для меня из двух зол - меньшее полная свобода с возможностью навредить себе, чем отсутствие свободы. Потому, что мне кажется, что я достаточно отвественный пользователь, чтобы избежать рисков связанных с неограниченой свободой. Но это может быть не так, например, для детей, сумасшедших и т.п.
                                  Ответить
                              • а в чем дело, создать переменную? ну или симлинки юзать
                                Ответить
                                • Где создать переменную? Там просто хендлер кнопки запилен как файл-диалог. Да, я могу потом отркыть файл проекта и его отредактировать, чтобы он не ссылался на абсолютные пути моей системы. Но Клисп сам так не может.
                                  Ответить
                                  • "Variables..." же кнопка рядом
                                    Ответить
                                    • Лол. Сейчас открыл - смотрю, да, теперь там можно указать переменные, но раньше не было. Но все равно через жопу. Вот больше мне делать нечего, как создавать переменные, когда среда их уже создала. Но это Клипс, они если исправят, то только через жопу.
                                      Ответить
                                      • а меня эклипс, как джава-программиста, устраивает даже больше, чем идея или тот же нетбинс
                                        Ответить
                                    • Но далеко за примерами все равно ходить не нужно. В одном месте исправили, в другом - та же жопа. Вот, например, хочу я поменять "основную" директорию проекта - и хуй там. Опять Клипс подогнал графический интерфейс без вариантов выбора. Хочешь - не хочешь, а прийдется править файл проекта вручную, потому что это говно решило, что другие директории, кроме тех, которые оно создало из шаблона "основными" быть не могут.
                                      http://postimg.org/image/cysl6ez01/full/
                                      Ответить
                                      • source folders можно насоздавать хоть десяток. я, например, делаю по стандарту /src/main/java, /src/main/resources/, src/test/java, /src/test/resources/, и иногда /src/main/webapp/
                                        Ответить
                                      • хотя как там он дружит с flash\flex хуиивознаит
                                        может плагин кривой
                                        Ответить
                                        • Так на картинке ж видно, что директория-то добавлена, ее нельзя сделать "основной" через графический интерфейс - но это пиздежь, т.как на самом деле можно, если исправить файл проекта. Но создатели решили анально оградить пользователей - ведь зачем назначать "основной" директорию вне проекта? - это ж потом неудобно с ней работать.

                                          Нет, это не плагин, речь об идеологии. Люди не понимают, как так можно взять и разрешить. Они боятся, что к ним потом прийдут спрашивать те, кто не прочитал мануал, что будут жаловаться и рыдать навзрыд, что не понимают, что им тяжело. Легче сразу запретить, чтобы потом не доебывали тупыми жалобами.
                                          Ответить
                                          • в самом деле, зачем назначать директорию проекта сырцовой вне проекта?
                                            Ответить
                                            • Потому что пидарас-сотрудник закомитил файлы проекта созданого в Клипсе версии не совместимой с моей?
                                              Ответить
                                              • а, для таких случаев появилась концепция виртуальных директорий: те же симлинки, только на уровне конфигов, а не файловой системы. я, например, так подключаю ассеты из одного проекта в остальные
                                                Ответить
                                                • Вот нехер мне больше делать, как засорять файловую систему какими-то не нужными мне симлинками, плодить виртуальные директории в этом уебищном Ява-блокноте. Другие замечательно справляются без этого цирка.
                                                  Ответить
                            • Эффект Пельцмана
                              Ответить
      • Правило хорошего тона - название метода не должно быть короче его содержания
        Ответить
        • Правило лямбд - название метода не должно быть.
          Ответить
          • А в идеале - и самого метода, ибо есть point free и комбинаторы.
            Ответить
            • Поинтфри не отделимо от самого метода или функции. А комбинаторы вообще для лохов, делающих свой код не поддерживаемым.
              Ответить
          • А можно ли считать лямбды методами?
            Даже если в Жаве они сделаны через какие-нить анонимные классы, все равно не должны методами считаться.

            Ну и чем не название:
            sqr = lambda x: x ** 2
            print sqr(20)
            Ответить

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