Если я не отсутствую, что-то, ','.join(foo)
должно сделать то, что Вы просите.
>>> ','.join([''])
''
>>> ','.join(['s'])
's'
>>> ','.join(['a','b','c'])
'a,b,c'
(редактирование: и поскольку jmanning2k указывает,
','.join([str(x) for x in foo])
более безопасно и вполне Pythonic, хотя получившую строку будет трудно проанализировать, если элементы могут содержать запятые - в той точке, Вам нужна полная мощность csv
модуль, как Douglas указывает в своем ответе.)
Без сожалений. Если вам не стыдно за код, который вы написали на прошлой неделе, это означает, что вы не улучшились как программист; -)
Если серьезно, мой подход всегда заключался в исправлении вещей, которые опасны (например, уязвимости SQL-инъекций ) срочно , а затем рефакторинг другого уродливого кода, если и когда мне случится работать в определенной области, которая требует рефакторинга. При исправлении ошибок или внедрении новых функций я часто веду список фрагментов кода, требующих рефакторинга, а затем реорганизую код после того, как я закончил свою «настоящую» задачу. Обычно это не занимает много времени, и у меня есть модульные тесты, чтобы убедиться, что я ничего не сломал (если ваш код не прошел модульное тестирование, это отличная причина его протестировать!).
Всякий раз, когда в детстве я делал что-то менее оптимальное, мой отец любезно говорил: «Что ж, жизнь - это познавательный опыт». Наши приложения тоже могут учиться:
В каждом выпуске наших приложений мы вносим ряд изменений:
Итак, постепенно мы работаем над заменой проблемного кода третьим и четвертым элементами.
Иногда вы можете оставить свои ошибки позади. Я знаю одного старшего разработчика, которого однажды наняли вне компании и попросили создать что-то похожее на то, что он написал для первой компании, но лучше . Они дали ему посох и инструменты, и он отдал .
Мои первые программы существуют только на кассетах TRS-80, где оксид железа отслоился. Пару распечатывают на семиконтактном 40-столбцовом термографическом матричном принтере, который выжигает буквы на специальной серебристой бумаге с металлическим покрытием. Однажды летом вся эта бумага почернела на чердаке.
Думаю, я в порядке. Мои самые старые зверства благополучно уничтожены.
На самом деле, есть одно злодеяние, которое продолжает грызть меня. Я создал видеорежим для Amiga под названием « Sliced HAM », который некоторое время был популярен. Он изменил базовые цвета для каждой строки, чтобы обеспечить более фотореалистичное изображение с меньшим количеством бахромы.
Я быстро написал конвертер и программу просмотра. В программе просмотра я сидел в цикле занятости, ожидая, пока пользователь закроет изображение. Это было неприемлемо для Amiga - первой многозадачной компьютерной системы массового рынка. Мне следовало дождаться события закрытия окна.
В течение многих лет люди говорили, что видеорежим работает медленно, но это был мой паршивый пример просмотра. Графический сопроцессор делал всю работу для каждой строки развертки.
Все еще не дает мне покоя.
Учитывая, что работа все еще существует, и у вас все еще есть шанс зафиксировать новый материал, исправьте дерьмо и проверьте! Исправить ошибку никогда не поздно. И в этом нечего смущаться. Все делают ошибки.
Я также верю в честность и что хорошее нападение - лучшая защита. Просто громко скажите: «Это мой код, и это чушь», и люди будут смеяться вместе с вами :) Нет необходимости пытаться скрыть свой код. Он есть в вашей VCS, в любом случае с вашим именем.
Я анонимно публикую в сети и заставляю других страдать! Нет, подождите, я делаю это в своем блоге, и мои сверстники, вероятно, посмеются над ним.
Это может быть балансирующий акт. Меня укусило «улучшение» некоторого работающего кода, но я подумал, что это некрасиво, и представил новую глупую ошибку.
С другой стороны, несколько раз в моей карьере я боролся с некоторыми из них, спроектированный кусок дерьмового кода (написанный мной или кем-то другим) - иногда на несколько недель - потому что я не думал, что у меня есть время исправить его.
В каждом случае я, наконец, укусил пулю и сделал это снова как следует, и проблемы исчезли почти сразу. Тогда я пожалел, что исправил это раньше - в конечном итоге это было бы быстрее.
Сосредоточьте свои усилия на тех разделах, которые вызывают у вас настоящее горе - разделах, над которыми вам нужно работать (новые функции, исправления ошибок) , но вы боитесь дотронуться, потому что они такие хрупкие или ужасные.
Это '
Лучший способ справиться с этими плохими воспоминаниями - научиться у них, как, я уверен, у вас есть. Также важно, прося прощения у членов вашей команды, чтобы вы продлили им то же самое. Самое главное, когда вы должны помнить эти «плохие примеры», когда вы наставляете младших членов команды.
Приношу свои извинения публично. Я хотел бы воспользоваться этой возможностью, чтобы извиниться за INewWindowManager. Извините.
Если он не сломан, не чините его.
Мне знакомо ощущение, что что-то можно было бы сделать намного проще и элегантнее, может быть, потому что вы лучше понимаете структуру, сейчас или потому что вы узнали какие-то новые техники. Но это действительно актуально только тогда, когда вы хотите расширить или изменить какой-то код, в противном случае просто дайте ему запуститься, если он работает. Если он не работает (т.е. если он глючит, работает слишком медленно, потребляет ресурсы и т. Д.), Вам все равно следует исправить это с самого начала и, следовательно, пока мало о чем сожалеть. А иначе ну о чем вы беспокоитесь? Красота кода такая мимолетная ...; o)
С другой стороны, если вы приходите работать над чужим кодом или даже над своим старым кодом, вы не должны удивляться, обнаружив неоптимальный код. . Мы все это делаем. Фактически, это ' s возможность почувствовать себя самодовольным и сыграть героя, когда вы успешно реорганизуете старый код.
Неоптимальный код - это всего лишь часть работы. Мы должны ожидать этого на каждом шагу и всегда быть готовыми к рефакторингу старого кода, когда нам нужно его изменить. Это проблема только в том случае, если руководство этого не понимает и не дает вам на это времени.
Раньше это беспокоило меня больше, чем сейчас. Я пришел к выводу, что это всего лишь часть процесса разработки. Никто не начал (и даже не делает сейчас) писать идеальный код с первого дня. Часто кода, который вы написали, было достаточно с учетом технологий и ресурсов, которые у вас были в то время. Нечестно (для вас или кого-либо еще) сравнивать код, который вы написали 10 лет назад, с крайним сроком в 1 неделю, с тем, что вы могли бы сделать сегодня с текущими технологиями и наборами навыков.
Возможно, вы работаете в организации, в которой у вас может быть или не быть возможности исправить прошлые ошибки.
Что вы можете сделать, так это не забывайте оставаться скромным и полезно для людей, которые сейчас находятся на той стадии, на которой были вы когда-то.
Насколько AWT может быть более полезным, чем Swing -
Большинство (хороших) разработчиков со временем улучшаются, и прошлые коллеги поймут, что вы, вероятно, сегодня лучше, чем были тогда, точно так же, как они, вероятно, тоже лучше. Ваш работодатель платил вам, основываясь на вашем опыте, а не на вашем опыте сейчас, поэтому он получил то, за что заплатил.
Если кто-то другой, кроме вас, достаточно заботится о вашем приложении и использует его ежедневно, то он может поддерживать его (если у них есть исходный код). Код устаревает. Приложение, которое не поддерживается, не улучшается и не перерабатывается, либо идеально (маловероятно), либо недостаточно важно, чтобы стоить затраченных усилий. Если бывший работодатель продолжает зарабатывать деньги на вашем старом приложении, не поддерживая его, это его проблема и проблема его клиентов. и в конечном итоге дойная корова иссякнет.
Если вы чувствуете, что ваше приложение широко используется, код находится в свободном доступе, и что-то, вероятно, будет показано в следующем посте thedailywtf, исправьте это. В противном случае радуйтесь тому, что существует достаточно старого посредственного кода, чтобы вы не привлекали внимание.
Я думаю, что более серьезной проблемой является текстовый мусор, который мы оставляем после наших предыдущих лет - старые сообщения на форумах, неправильные сообщения в блогах, пламенные войны за языковые особенности и тому подобное.
Я думаю, что более серьезной проблемой является текстовый мусор, который мы оставляем после наших предыдущих лет - старые сообщения на форумах, неправильные сообщения в блогах, ожесточенные войны за языковые особенности и тому подобное.
Я думаю, что более серьезной проблемой является текстовый мусор, который мы оставляем после наших предыдущих лет - старые сообщения на форумах, неправильные сообщения в блогах, ожесточенные войны за языковые особенности и тому подобное.
Сначала я удостоверился, что у меня есть резервная копия старого, и «на всякий случай, я не так умен, как я думал» и «Если я такой умен, как думал Я был, я могу это доказать! :)
Там есть новая услуга для кодировщиков: Смещения плохого кода . Оплатить, чтобы восполнить прошедшие возможности программирования ...