Форум сайта python.su
Слово лучше, бредовые это конечно круто, но давайте более аргументировано)Видите ли это позиция. Понимаете? Подход. Он лучше потому что это базис, из-за которого создавался питон. Код читается чаще чем пишется. Следовательно, явное - лучше неявного, ибо более читабельно.
даже если скажем в той же джанге тысячу и один раз из проекта в проект повторять дикие импорты типаНу, я сейчас просто расплачусь.
from django.contrib.contenttypes.models import ContentType
а импорты это не дествующий код?Нет. Это, фактически, ссылки на действующий код.
А в чем смысл?) в том что это “круто” или “лучше” ?)Не надо троллить.
Отредактировано (Дек. 26, 2009 20:34:51)
Офлайн
FerromanНу и чем так сложнее читать информацию не из верха файла, а из другого места, причем я не понимаю почему если человек увидит в коде проекта джанги ContentType ему может понадобится вот это - from django.contrib.contenttypes.models import ContentType это что так неоднозначно? ContentType имеет кучи разных значений чтобы постоянно это иметь рядом полный путь к нему? в 99% случаев это никому не надо. следовательно это информация только осложняет чтение)
Код читается чаще чем пишется. Следовательно, явное - лучше неявного, ибо более читабельно.
FerromanДля интерпретатора это обычная директива сделать определенное действие - точно такой же выполняющийся код, который создает объект модуля, не надо приписывать тут что-то особенное этому фрагменту. Это никакая не ‘ссылка’ это точно такой же выполняющийся код.
Нет. Это, фактически, ссылки на действующий код.
FerromanИ при чем тут это? в чем тут неоднозначность моего варианта? читаете его из другого места он там однозначно надежно, четко и единственно определен.
Смысл у него не в том что бы не писать одинаковые строчки, а в том, что бы
“Каждый фрагмент знания должен иметь единственное, однозначное, надёжное представление в системе”
Импорты - по сути ссылки на это представление.
FerromanВ 99% случаев само имя много говорит а сущности - если нет значит оно плохо подобрано. Весь путь до этого излишен. И по сути это детали реализации которые можно и спрятать. клиентскому коду не обязательно знать что есть куча вложеных модулей в которых расположено описание какой то сущности - ему нужна сущность в нужный момент и все, а не весь путь до нее. Вспомните IOC и подобные вещи когда все зависимости максимально прячутся и доставляются по требованию. В случае импортов все сверху жестко захардкорено в файл, вам почему-то такой подход по душе)
Скрытые импорты - плохо для читабельности и ясности в анализе кода.
FerromanЯ понимаю о чем вы. И то что по сути это мелочь и не так уж сложно и напряжно явно все определить, но не надо выворачивать что если есть такая ‘позиция’ то это значит что все остальное ‘хуже и бредово’ приводя какие то аргументы о читаемости, это не читаемость это избыточность читаемости.
Мне интересно - вы сознательно “клеете дурака”, делая вид, что не понимаете о чём я?
Отредактировано (Дек. 26, 2009 21:40:37)
Офлайн
в 99% случаев это никому не надо. следовательно это информация только осложняет чтение)Это вы так решили. Вам так удобно. Мне это нужно, и мне гораздо более удобно смотреть что откуда импортируется в файле, в котором я непосредственно работаю, а не где бы то ни было ещё.
И при чем тут это? в чем тут неоднозначность моего варианта? читаете его из другого места он там однозначно надежно, четко и единственно определен.В том-то и дело, что писать в одном месте, а смотреть в другое, особенно при коллективной разработке, черевато последствиями.
Вспомните IOC и подобные вещи когда все зависимости максимально прячутся и доставляются по требованию.Что я должен вспомнить?
В случае импортов все сверху жестко захардкорено в файл, вам почему-то такой подход по душе)Не вижу проблемы.
В 99% случаев само имя много говорит а сущности - если нет значит оно плохо подобрано. Весь путь до этого излишен.Вам излишен. Мне нет.
Для интерпретатора это обычная директива сделать определенное действие - точно такой же выполняющийся код, который создает объект модуля, не надо приписывать тут что-то особенное этому фрагменту. Это никакая не ‘ссылка’ это точно такой же выполняющийся код.Значит вы всё-таки сознательно “клеете дурака”. Мне всё равно как это работает на уровне интерпретатора. Для программиста импорт - просто отсылка к коду размещённому в другом месте. Собственно импорт - основной инструмент в обеспечении самого DRY принципа.
Я понимаю о чем вы. И то что по сути это мелочь и не так уж сложно и напряжно явно все определить, но не надо выворачивать что если есть такая ‘позиция’ то это значит что все остальное ‘хуже и бредово’ приводя какие то аргументы о читаемости, это не читаемость это избыточность читаемости.Значит. В рамках системы созданной в расчёте на такую позицию.
перед тем как опровергать подумайте головой, и конкретными аргументами а не фразами ‘хуже’, хотя можете молится на какую то там свою (или не свою) позицию.1. Я всегда думаю исключительно головой. У вас есть другие органы для мыслительных процессов?
Офлайн
Ferromanопять же почему?
Вам излишен. Мне нет.
Ferromanэто вы считаете за аргументы? то что вы делаете руками делается в одном месте и один раз, а вот когда все в разных местах хардкорят импорты, половина которых забывается, удалятся или еще что туда сюда меняется и получается каша, нежели в случае когда это все догружается по требованию, из одного места.
Это вы так решили. Вам так удобно. Мне это нужно, и мне гораздо более удобно смотреть что откуда импортируется в файле, в котором я непосредственно работаю, а не где бы то ни было ещё.
Следовательно это вопрос вкуса. Вкусы большинства питонистов отличаются от вашего.
Делайте выводы.
FerromanГде аргументы, если последствиями то какими? вы видимо не понимаете что это код будет написан один раз и забыт, далее он будет только читаться (и то в 1% вариантов) и все, никаких изменения в нем не будет.
В том-то и дело, что писать в одном месте, а смотреть в другое, особенно при коллективной разработке, черевато последствиями.
FerromanПочему вы так не думаете? потому что думаете что так думает автор языка? хоть один аргумент пожалуйста.
Вы думаете что полный импорт - излишество. Я так не думаю.
Я так понимаю, так не думает и дизайнер языка.
FerromanНе вижу аргументированного объяснения. Троллите вы.
2. Я уже объяснил почему я так думаю. Вы продолжаете троллить.
FerromanТо что если есть зависимости то следует их понижать, и это не дело вкуса или чего то еще, есть вполне объективные вещи которые лежат вне самого языка, и множество возможных реализаций этого с помощью конкретного языка.
Что я должен вспомнить?
FerromanПеречитайте сами, я уже от вас наслушался,у меня есть неудобство в реализации и я ищу способ его решения, вы же занимайтесь перечитыванием принципов.
Перечитайте значения понятия DRY больше 1-го раза.
FerromanМне ясна эта философия, и я выше объяснил аргументировано почему в данном случае мне лучше следовать своей позиции. А вы следуйте своей философии, если у вас такой фанатичный догматизм, я же на это не претендую, я просто указал преимущества, от вас преимуществ я не услышал, кроме того что ‘мне так удобно, так задумывалось в дизайне языка. Я думаю что так думают все.’. А кому что следовать каждый сам решает.
Попробуйте вникнуть в философию языка, а не просто тащите фичи из других языков.
Офлайн
Упорный Evg, для меня тоже читабельность кода важнее быстроты его написания.
Неявные импорты сильно это дело портят - особенно в больших проектах со значительной codebase.
ИМХО, удобство чтения исходников - чуть ли не главный критерий оценки любого языка программирования.
Вы данное утверждение не воспринимаете - что ж, дело личное.
Есть такой трюк: можно написать __builtins__.name = object, тогда name будет доступно в любом модуле.
Если хотите - попробуйте, поиграйтесь. Возможно, потом лучше поймете, почему так делать не нужно никогда.
И никому этот код не показывайте :)
Офлайн
опять же почему?Потому что я хочу видеть все сущности используемые в коде файла. Окуда они взялись. А не лазить по сторонним файлам сопоставляя сущности с файлами где они представлены.
это вы считаете за аргументы?Да считаю. Если вы - нет, то это не моя проблема.
то что вы делаете руками делается в одном месте и один раз, а вот когда все в разных местах хардкорят импорты,В каких это “разных местах”?
половина которых забывается, удалятся или еще что туда сюда меняется и получается каша,Если у вас в импортах “каша” то вы ССЗБ.
нежели в случае когда это все догружается по требованию, из одного места.Ага, а когда интересно откуда взялась сущность, предлагаете сопоставлять с другим файлом, искать среди кучи других, после чего уже переходить к месту определения. И ориентироваться что откуда взялось по названиям. Замечательно.
Где аргументы, если последствиями то какими? вы видимо не понимаете что это код будет написан один раз и забыт, далее он будет только читаться (и то в 1% вариантов) и все, никаких изменения в нем не будет.Я не ратую за лёгкость писания кода, а только за чтения. Поскольку код чаще читают, чем пишут.
Почему вы так не думаете? потому что думаете что так думает автор языка? хоть один аргумент пожалуйста.Кроме того, что я согласен в этом вопросе с автором, есть ещё причина - потому что язык создан для такого его использования.
То что если есть зависимости то следует их понижать, и это не дело вкуса или чего то еще, есть вполне объективные вещи которые лежат вне самого языка, и множество возможных реализаций этого с помощью конкретного языка.Это просто какая-то абстрактная фраза. Мы говорим о конкретном “синтаксическом сахаре” языка. Я говорю что такой сахар вреден читабельности. Вы твердите обратное.
Перечитайте сами, я уже от вас наслушался,у меня есть неудобство в реализации и я ищу способ его решения, вы же занимайтесь перечитыванием принципов.Я читаю принципы вам, сам то я их уже и без того неплохо знаю. Мне показалось вы не совсем понимаете зачем они нужны и что конкретно имелось в виду под абривиатурой DRY.
Мне ясна эта философия, и я выше объяснил аргументировано почему в данном случае мне лучше следовать своей позиции.Нет не объяснили и не аргументировали. “Лень копировать импорты” - не самый сильный аргумент. C DRY я уже объяснил, что к импорту этот принцип отношения не имеет.
А вы следуйте своей философии, если у вас такой фанатичный догматизм, я же на это не претендую, я просто указал преимущества, от вас преимуществ я не услышал,Это python-философия. Я ей следую, ибо было бы глупо следовать философии одного языка, используя другой.
мне так удобно, так задумывалось в дизайне языка. Я думаю что так думают все.'Т.е. “так задумано в дизайне языка” уже не аргумент? А про “мне так удобно” - это был контраргумент на ваше “99% случаев это никому не надо” “мне неудобно”.
Офлайн
Все своидится к тому что вы уперлись что вам нужна вот эта информация почти всегда - from django.contrib.contenttypes.models import ContentType, вот объясните зачем вам в 99% случаев то что идет до самого имени? каким-то доводом кроме “так задумано в дизайне языка”. Во вторых что там именно задумано? язык предоставляет возможность импорта а как пользоваться ею решает программист. Если есть импорты это не значит что это единственно возможный и правильный способ подгружать имена, над любым инструментом всегда можно сделать более абстрактную и более удобную для конкретного случаю обертку.
Андрей СветловВо 1-х у меня сейчас немного другая специфика, нужно написать быстро и много небольших вещей, которые будут забыты и никто к ним возвращаться никогда не будет. Во 2-х мне не ясны ваши аргументы насчет читаемости, все импорты будут определены только не в самом файле а в другом месте причем одном, разница только в том что в вашем случае придется листать файл к верху, а в моем открыть один другой файл и найти там соответствие - те это практически равносильно как видите, никакой неявности и магии тут нет, это просто способ реализации облегчающий написание и все. Это равносильно тому что интерпретатор не вывалит исключение когда найдет неизвестное имя, а попытается загрузить его за программиста вот и все. Перекрытие имен может напрягать только в случаях если именам давать неосмысленные имена типа A,B,C.
Упорный Evg, для меня тоже читабельность кода важнее быстроты его написания.
Неявные импорты сильно это дело портят - особенно в больших проектах со значительной codebase.
ИМХО, удобство чтения исходников - чуть ли не главный критерий оценки любого языка программирования.
Вы данное утверждение не воспринимаете - что ж, дело личное.
Отредактировано (Дек. 27, 2009 11:12:01)
Офлайн
Sapienti Sat.
Офлайн
FerromanАга именно так, когда конкретно возразить нечем.
Sapienti Sat.
Офлайн
Вы не желаете видеть аргументы, ли не считаете их достаточно вескими.
Продолжать нет смысла, и всё уже сказано. Sapienti Sat.
Офлайн