Pull to refresh

Comments 8

>>> log2 = {}
>>> key = 1
>>> for log2[key] in range(100):
...     key *= 2
...
>>> log2[16]
4
>>> log2[1024]
10


Мне кажется за такие лайфхаки в коде надо нагоняй устраивать…
UFO just landed and posted this here
UFO just landed and posted this here
KISS замечательный принцип. Только к чему его применять к реализации библиотеки или к ее интерфейсу? На первый взгляд разработчики решили применить его только к реализации, разделив ответственность методов. Метод translate отвечает за замену, метод maketrans за преобразование. Вот и получился такой «кошмарный код».

Возникает вопрос почему внутри translate не вызвать maketrans. А в качестве аргументов методов translate использовать аргументы метода maketrans. Интерфейс бесспорно упростится.
А что ещё мы получим? Как минимум мы получим создание таблицы преобразования при каждом вызове translate. Как максимум мы получим узкое место на ровном месте, при возрастании нагрузки на проект.

ИМХО. Мне такой KISS интерфейса в стандартной библиотеке не нужен. Те кому это понадобится введут свою абстракцию.
Единственное к чему у меня есть претензия это название метода maketrans, вот оно точно не очевидное.
А как надо было? Четыре разных метода? Или четыре вида аргументов?
UFO just landed and posted this here
UFO just landed and posted this here
Sign up to leave a comment.