Избегайте использования новых языковых функций, потому что незнакомы большинству программистов? - PullRequest
0 голосов
/ 28 апреля 2011

Читая «Сценарии Python для вычислительной науки», я встретил следующий текст в разделе, посвященном генераторам:

Быстро ли написать генератор или реализовать методы класса __iter__ и __next__ зависит от приложения, личного вкуса, читаемости и сложности итератора. Поскольку генераторы очень компактны и незнакомы большинству программистов, код часто становится менее читаемым, чем соответствующая версия, использующая __iter__ и __next__.

Это заставило меня задуматься о том, является ли незнакомость (других программистов) хорошей причиной НЕ использовать относительно новые и мощные функции языка (например, генераторы Python). Если вы не используете его, как он может стать популярным и привычным?

Итак, мой вопрос: является ли незнакомость иногда хорошей причиной не использовать новые языковые функции?

Ответы [ 3 ]

1 голос
/ 28 апреля 2011

Ваша собственная незнакомость с языковой функцией может быть хорошей причиной для легкого шага.Например, в C #, если вы не уверены в различиях между object y = func1() ?? func2(); и object y = func1() != null ? func1() : func2(); (подсказка: порядок оценки слева направо), то, возможно, вам лучше написать соответствующее предложение if простопотому что понятно, что на самом деле происходит.Кто-то, кто знает нюансы языка лучше, может очень хорошо придти и рефакторинг позже, а тем временем стоимость обычно низкая.

Однако, если вы знаете, как использовать языковую функцию, я вижу малопричина избегать его использования просто потому, что другим может быть трудно понять.Если вы действительно чувствуете необходимость, добавьте комментарий (например, «?? is the _null coalescing operator_»), чтобы помочь коллегам-разработчикам понять, на что обращать внимание, если они не могут понять из кода, что он делает, иВы боитесь, что им, возможно, придется пойти на это в одиночку.

Это, заметьте, о коде производства.Эксперимент, конечно, имеет свое место, но его место не обязательно в основной кодовой базе.Я всегда держу «скретч-проект» под рукой, когда хочу попробовать что-то, не рискуя воздействовать на что-либо еще.Там я часто беру вольности далеко за пределы тех, что я использую в производственном или производственном коде.

0 голосов
/ 28 апреля 2011

Поскольку вопрос субъективный, я выскажу противоположное мнение.

Если вы будете работать там, где есть обзоры кода, вы скоро узнаете, что ваши коллеги считают "незнакомым".1003 *

Поскольку они также должны поддерживать код, вы можете попытаться помочь им ознакомиться с «незнакомым» кодом.Но в конечном итоге это призыв к суждению, а иногда то, что вы считаете чистым кодом, не так.

0 голосов
/ 28 апреля 2011

Я бы не сказал, что недобросовестность является хорошей причиной, чтобы не использовать новые языковые функции. Или в этом отношении используйте новые языки.

Отсутствие поддержки новой функции у поставщиков инструментов может быть причиной, если у вас есть какие-либо опасения по поводу работы с несколькими поставщиками.

...