1. Python / Говнокод #17211

    −116

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    # ЭТО ВСЕ КОСТЫЛИ!
    # Надо сесть и договорится о точном формате, задокументировать его, подписать кровью и хранить в сейфе.
    
    # некоторые преобразования
    # за подробностями в ndtpv6_gutz_parse.md в раздел `ожидаемые данные`
    fsm_info = p['data'].get('cells', {})
    channel_data = dict([(key, fsm_info.get(key)) for key in (FUEL, ASMPP) if fsm_info.get(key)])
    channel_data and da_packet.update({'channel_data': channel_data})

    Потомки нас проклянут)

    Запостил: intestinalbrain, 28 Ноября 2014

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

    • --А давай использовать классы вместо диктов с диктами, это поможет там довольно четко специфицировать формат данных, а в случае IDE даже даст интеллисенс?
      --Нет. Это сложно, не нужно, много писать, будет тормозить, не у всех IDE, все равно нужно думать, это не решает всех проблем.
      --А давай тогда документировать в вики?
      --Нет, программисты не любят писать доки, доки нужны чтоб тянуть время, нужно программировать а не доки писать, у нас реальный мир, времени на доки нет
      --Ок
      Ответить
      • Дык в питоне дикты - стандарт де-факто, кстати. Я не за, кстати.
        Ответить
        • Иногда дикты, иногда туплы)
          Но пайтоновцы хотя бы пишут хорошие доки
          Ответить
          • Ах, да, кортежи забыл, они еще лучше. В то ли poplib, то ли smtplib.

            >Но пайтоновцы хотя бы пишут хорошие доки
            Которые один хрен из ide не почитать.
            Ответить
            • >>Которые один хрен из ide не почитать.
              Частично:
              http://postimg.org/image/qu6bja9ff/
              Ответить
              • Это, пардон, что?
                Ответить
                • Это показ эпидока по контрол ку в Pycharm)
                  Ответить
                  • Который тормозной и вроде бы платный? А в других иде как? В жаве в дефолтовом эклипсе робит.
                    Ответить
                    • >тормозной
                      Смотря что за машина у Вас, у меня не тормозит

                      >платный
                      Уже года два как есть бесплатный (коммунити)
                      Ответить
                      • >у меня не тормозит
                        Надо им в системных требованиях написать: "у нас не тормозит". А бесплатный он для любого применения?
                        Ответить
          • ХЗ. По-моему в Питоне документация херовая. Как бы она красиво оформлена и все такое, но искать в ней очень долго потому что нет содержания (index). Явадок в этом смысле лучше, например. И еще есть неприятный момент, как правило вместо того, чтобы написать что функция делает, дают каие-то невнятные примеры, и пойди-угадай что же имелось в виду.
            Ответить
            • Там просто немного другой подход.

              В яве принято: вот тебе пакет my_package, вот мануалка по нему, вот мануалы по классу.
              А в пайтоне принято писать целую статью про каждый кусок функционала.

              В итоге читать её дольше (нельзя сразу прочитать мануал по нужному тебе классу), но считается (в теории) что после прочтения ты лучше будешь понимать API.
              Ответить
              • Я совсем про другое. Никто не запрещает приложить к статье список функицй. Я не против статьи, но это разные вещи. Если мне нужно найти все методы какого-то класса, то искать их где-то по тексту совсем не хочется. Просто у Питона плохая заготовка для типичной документации (я вместо питоновской пользуюсь NaturalDocs поэтому). Она не так красиво выглядит, зато удобно.
                Ответить
                • Я не очень пойму, чего тебе не хватает. Нормального апидока? В питоне он вроде бы есть (с поправкой на отсутствие типов), но из иде его особо не почитать, алсо, жава позволяет комментировать и переменные/константы/энумы, чего в питоне нет.
                  Ответить
                  • В Питоне у документации нет содержания. Чего я хочу: например, чтобы у модуля string был список ссылок со всеми функциями и классами, которые в этом модуле есть типа
                    7.1.1. String constants
                    string.ascii_letters
                    string.ascii_lowercase
                    string.ascii_uppercase
                    string.digits
                    string.hexdigits
                    string.letters
                    string.lowercase
                    string.octdigits
                    string.punctuation
                    string.printable
                    string.uppercase
                    string.whitespace
                    7.1.2. String Formatting
                    class string.Formatter
                        format(format_string, *args, **kwargs)
                        vformat(format_string, args, kwargs)
                        parse(format_string)
                        get_field(field_name, args, kwargs)
                        get_value(key, args, kwargs)
                        check_unused_args(used_args, args, kwargs)
                        format_field(value, format_spec)
                        convert_field(value, conversion)
                    7.1.4. Template strings
                    class string.Template(template)
                        substitute(mapping[, **kws])
                        safe_substitute(mapping[, **kws])
                        template
                    7.1.5. String functions
                    string.capwords(s[, sep])
                    string.maketrans(from, to)
                    7.1.6. Deprecated string functions
                    string.atof(s)
                    string.atoi(s[, base])
                    string.atol(s[, base])
                    string.capitalize(word)
                    string.expandtabs(s[, tabsize])
                    string.find(s, sub[, start[, end]])
                    string.rfind(s, sub[, start[, end]])
                    string.index(s, sub[, start[, end]])
                    string.rindex(s, sub[, start[, end]])
                    string.count(s, sub[, start[, end]])
                    string.lower(s)
                    string.split(s[, sep[, maxsplit]])
                    string.rsplit(s[, sep[, maxsplit]])
                    string.splitfields(s[, sep[, maxsplit]])
                    string.join(words[, sep])
                    string.joinfields(words[, sep])
                    string.lstrip(s[, chars])
                    string.rstrip(s[, chars])
                    string.strip(s[, chars])
                    string.swapcase(s)
                    string.translate(s, table[, deletechars])
                    string.upper(s)
                    string.ljust(s, width[, fillchar])
                    string.rjust(s, width[, fillchar])
                    string.center(s, width[, fillchar])
                    string.zfill(s, width)
                    string.replace(s, old, new[, maxreplace])


                    Чтобы не искать их по всей странице.
                    Ответить
                    • Ты хочешь простыни вроде тех, что генерирует javadoc? Но они нужны только когда нет под рукой IDE
                      Ответить
                      • Нет, не только, почему я должен страдать от плохо сделаного сайта?
                        Ответить
                        • Вероятно, предполагается, что программист в состоянии написать сайт под себя.
                          Ответить
                        • То есть, выхлоп javadoc - это хорошо сделанный сайт что ли?
                          Ответить
                          • С точки зрения удобства в использовании - да. Старый мне даже больше нравился. Вот чего там не хватает, так это ссылок на другие классы в том же пакете.
                            Ответить
    • >channel_data and da_packet.update
      if не любим? Экономим строчку?
      Ответить

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