?

Log in

No account? Create an account
nyaload

Журнал Пушыстого

Журнал Пушыстого

Previous Entry Share Next Entry
code reuse
nyaload
_winnie
Переиспользование кода и его универсализация под разных пользователей приводят примерно к таким интерфейсам.

Эта функция - зачитывает читает файл с текстовой таблицей:

pandas.read_table(filepath_or_buffer, sep='\t', dialect=None, compression='infer', doublequote=True, escapechar=None, quotechar='"', quoting=0, skipinitialspace=False, lineterminator=None, header='infer', index_col=None, names=None, prefix=None, skiprows=None, skipfooter=None, skip_footer=0, na_values=None, true_values=None, false_values=None, delimiter=None, converters=None, dtype=None, usecols=None, engine=None, delim_whitespace=False, as_recarray=False, na_filter=True, compact_ints=False, use_unsigned=False, low_memory=True, buffer_lines=None, warn_bad_lines=True, error_bad_lines=True, keep_default_na=True, thousands=None, comment=None, decimal='.', parse_dates=False, keep_date_col=False, dayfirst=False, date_parser=None, memory_map=False, float_precision=None, nrows=None, iterator=False, chunksize=None, verbose=False, encoding=None, squeeze=False, mangle_dupe_cols=True, tupleize_cols=False, infer_datetime_format=False, skip_blank_lines=True)

  • 1
К этому приводит любое чрезмерное обобщение.

С наступающим, кстати :)

Спасибо!

Обобщение - видимо, нельзя выбрать больше двух элементов из тройки "без велосипедов и копипасты; простой интерфейс; удовлетворяет много разных людей".

Без каких-то новых принципиальных парадигм в программировании, вида "возьми ту функцию, только выкини в ней предпоследний if".

Edited at 2015-12-10 11:54 pm (UTC)

Почему бы не сделать какую-нибудь структуру Settings с дефолтными значениями и каким-нибудь набором стандартных установок?

Это собственно уже и есть структура с дефолтными значениями (в python - параметры функций именованые, поэтому можно без структур указать только нужные). Но всё равно, поражает количеством.

pandas.read_table(
    filepath_or_buffer,
    sep='\t',
    dialect=None,
    compression='infer',
    doublequote=True,
    escapechar=None,
    quotechar='"',
    quoting=0,
    skipinitialspace=False,
    lineterminator=None,
    header='infer',
    index_col=None,
    names=None,
    prefix=None,
    skiprows=None,
    skipfooter=None,
    skip_footer=0,
    na_values=None,
    true_values=None,
    false_values=None,
    delimiter=None,
    converters=None,
    dtype=None,
    usecols=None,
    engine=None,
    delim_whitespace=False,
    as_recarray=False,
    na_filter=True,
    compact_ints=False,
    use_unsigned=False,
    low_memory=True,
    buffer_lines=None,
    warn_bad_lines=True,
    error_bad_lines=True,
    keep_default_na=True,
    thousands=None,
    comment=None,
    decimal='.',
    parse_dates=False,
    keep_date_col=False,
    dayfirst=False,
    date_parser=None,
    memory_map=False,
    float_precision=None,
    nrows=None,
    iterator=False,
    chunksize=None,
    verbose=False,
    encoding=None,
    squeeze=False,
    mangle_dupe_cols=True,
    tupleize_cols=False,
    infer_datetime_format=False,
    skip_blank_lines=True
)


Edited at 2015-12-10 09:59 pm (UTC)

А, это python, я не узнал вас без def-а. =) И функция не вызывается, а объявляется. Да, тогда ок, но выглядит действительно страшновато.

и тестов у этой функции два в какой степени? :)

По крайней мере, каждое название - встречается в папке с тестами

Из любопытства посмотрел некоторые параметры - тестируется в разных вариантах.

Видно, что несмотря на невозможность перебрать все варианты - всё-таки постарались наиболее очевидно зацепленные варианты протестировать.

Вот один из тестовых скриптов - https://github.com/pydata/pandas/blob/master/pandas/tests/test_frame.py





Edited at 2015-12-10 10:20 pm (UTC)

С другой стороны, может это как раз удобно? Пишешь себе один вызов, что нужно - специфицируешь. Никаких дополнительных конфигов и структур данных. Как в имажмаджике - всего несколько команд, но у них миллион опций. Не нужно - не используешь, и всё ок.

Edited at 2015-12-10 11:08 pm (UTC)

Да, конечно. С другой стороны, основное время уходит на выяснение, какие именно параметры нужны из миллионов, вплоть до того, что иногда быстрее написать велосипед, чем прочитать документацию (или даже быстрее чем допилить напильником решение со StackOverflow, если оно не совсем точно то, что нужно себе).

Edited at 2015-12-10 11:12 pm (UTC)

кто-то не смог вовремя остановиться ))
хеш сюда просто сам просится :)

Edited at 2015-12-11 07:25 am (UTC)

Присоединяюсь к поздравлениям...
Всех благ!
:-)

в оригинальном варианте было не намного меньше

  • 1