Что это берет, чтобы быть лучшим программистом OO? [закрытый]

Использование модуля CSV, как и вы, довольно просто. Определите ваши заголовки в массиве, а затем создайте DictWriter с именами полей, установленными для вашего массива. Ссылка на следующий код и документацию:

  import csv

  with open('names.csv', 'w') as csvfile:
    fieldnames = ['first_name', 'last_name']
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)

    writer.writeheader()
    writer.writerow({'first_name': 'Baked', 'last_name': 'Beans'})
    writer.writerow({'first_name': 'Lovely', 'last_name': 'Spam'})
    writer.writerow({'first_name': 'Wonderful', 'last_name': 'Spam'})

Вот документация:

https://docs.python.org/2/library/csv.html#csv.DictWriter

11
задан Mendelt 24 October 2008 в 09:42
поделиться

17 ответов

Вы, вероятно, найдете, что изящные проекты OO, которыми Вы восхищаетесь, не являются первым повторением, но следуют из нескольких корректировок, рефакторингов и подстроек

попытайтесь квалифицировать, почему Вы думаете, что их проекты 'лучше', чем Ваши и корректируются соответственно

различие между любительским устройством записи и профессиональным устройством записи - то, что профессионал переписывает; то же содержит для программирования

33
ответ дан 3 December 2019 в 00:41
поделиться

TDD работал на меня. Запись тестов сначала без хорошего oo является реальным PIA, таким образом, я должен был стать лучше в нем.

0
ответ дан 3 December 2019 в 00:41
поделиться

знание и понимание GoF (Гамма и др.) шаблоны разработки никогда не являются неправильными. они могут быть применены к большому количеству ситуаций. я предполагаю, что они - существенный материал для каждого разработчика!

0
ответ дан 3 December 2019 в 00:41
поделиться

Какие работы для меня:

  • Знайте домен своего приложения и останьтесь близко к домену максимально долго при тихом предотвращении дублирования кода.

  • Не придерживайтесь одного языка, учите несколько языков OO. Smalltalk, Comon Lisp, Python, JavaScript у всех есть очень интересные способы реализовать ООП. Просмотрите их источник (Обозреватель объектов Smalltalk является большим инструментом для этого).

  • Реализуйте lib ООП на языке, который не имеет никакого стандарта ООП, как Lua: это покажет Вам это self/this может быть не что иное как неявный первый аргумент, указывающий на состояние и делегирующий его поведение к его class/vtable/metatable (который может в свою очередь делегировать вызов к его родителю class).

Удачи!

1
ответ дан 3 December 2019 в 00:41
поделиться

Быть хорошо воспитанным, наличие тех людей садятся с Вами, когда у Вас есть проблема и работа оно через с Вами. Вы понимаете, как они думают о вещах в OO путь.

Регулярные обзоры кода. Думайте, что я извлек уроки больше всего из обзора кода команды, проводимого через PowerPoint, в котором некоторое презрение вылили на моем коде. Сконцентрированный мой ум, это сделало.

Помогший, конечно, что я изучил OO с Smalltalk (все должны быть вынуждены сделать это, по моему скромному мнению). Язык всегда поощрял понятие ‘отправки сообщения’. Таким образом, не встройте материал здесь, запишите новый метод и назовите его (т.е. отправьте сообщение и получите ответ **), результат? Простота, слабая связь, высокая связность.

** То, когда я пишу свой JavaDoc для метода доступа, я все еще пишу ‘ответ [вздор], который представляет [вещь]’ Людей, может думать, что я являюсь странным, но без названный полицейскими до сих пор....

0
ответ дан 3 December 2019 в 00:41
поделиться

Привет и хороший день для всех

Как Радостный сказал: "Вы становитесь лучшим объектно-ориентированным программистом путем упущения объектной ориентации в течение момента и ориентируете себя на запись инструмента для очистки, лучших программ при улучшении существующих программ".

Это - ключ: Думайте и получите простое решение как возможное и кодируйте подобный

Это - все Без больше.... до свидания

1
ответ дан 3 December 2019 в 00:41
поделиться

Помимо приобретения знаний из академического материала как книги и бумаги, я высоко рекомендую: узнайте больше, чем один язык, особенно если Вы происходите из господствующей тенденции Java/C#. Изучите рубин, изучите отличный, изучите smalltalk, изучите шепелявость, изучите различия между затем и в теории и на практике.

Академическим, но превосходным примером является сингл по сравнению с несколькими, диспетчеризируйте: можно проверить статью в Википедии и лично убедиться, как Вы написали бы другой код в зависимости от возможностей языка. Более существенно это помогает Вам понять, как достигнуть тех же эффектов на языке X при поддержании серьезного дизайна.

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

3
ответ дан 3 December 2019 в 00:41
поделиться

Функциональное программирование практики, и на выделенных языках функционального программирования и на объектно-ориентированных языках. Это, увеличит Вашу оценку того, как допускающие повторное использование алгоритмы помогают поощрить четко определенные интерфейсы, который приводит к easier-to-work-with элементам программы.

3
ответ дан 3 December 2019 в 00:41
поделиться

Первые книги, необходимо будет знать некоторые скороговорки GoF, но что еще более важно необходимо понять принципы позади шаблонов. Поймите различия между старого стиля (используйте наследование для повторного использования кода) по сравнению с новым стилем (предпочтите инкапсуляцию по наследованию), oo дизайн. Две хороших книги для чтения являются Шаблонами разработки, Объясненными Shalloway и Trott и Гибкой разработкой программного обеспечения, Принципами, Шаблонами и Методами Bob Martin.

Затем Вы должны испытать. Теория в книгах хороша, но необходимо точно настроить смысл того, когда использовать что. Как использовать процесс для точной настройки проектов (Steven A. Lowe, уже названный повторениями), много old-timey-oo-gurus описало итерационное программирование и oo-программирование в тех же газетах и книгах.

И в последний раз но я думаю самое главное, что Вам нужны обратная связь и коммуникация. Говорите с другими программистами предпочтительно за пределами организации, в которой Вы работаете. Попытайтесь работать с как можно большим количеством людей (OSS хорошо для этого), в конечном счете, Вы изучаете от людей не книги.

4
ответ дан 3 December 2019 в 00:41
поделиться

Вы становитесь лучшим объектно-ориентированным программистом путем упущения объектной ориентации в течение момента и ориентируете себя на запись инструмента для очистки, лучших программ при улучшении существующих программ.

4
ответ дан 3 December 2019 в 00:41
поделиться

Хороший дизайн OO:

  • это читает как поэзия
  • не нуждается ни в каком комментарии
  • доверяйте своим объектам (позвольте управлению пойти),
  • состав пользы по наследованию
5
ответ дан 3 December 2019 в 00:41
поделиться

[юмор]

Объектно-ориентированные навыки могут быть освоены из книг и других ресурсов. Но если Вы удачливы, Вы наследовали навыки от своего родителя. Большую часть времени это - вопрос, чтобы предоставить и использовать корректный метод. Будьте осторожны относительно суммы аргументов. Меньше лучше.

Используйте правильные названия чего-либо. Используйте глаголы в качестве метода действия. Используйте существительные для чего-либо, что нужно помнить. Не будьте слишком творческими и сохраните свое решение максимально простым, еще Ваши пользователи будут confusers.

Также важно инкапсулировать противные детали. И обязательно еще скройте Ваших членов парламента, не занимающих официального поста для широкой публики, неожиданное поведение произойдет. Также знайте для ловли исключительной ситуации на правильном уровне.

Дайте отдых мне для нажатия Вас, чтобы всегда протестировать Ваши единицы и использовать правильный интерфейс для обеспечения достаточного количества дескрипторов для счастливого пользователя.

[/юмор]

11
ответ дан 3 December 2019 в 00:41
поделиться

Что-то это работало на меня, Читает. У меня просто был момент Лампы с этой книгой... Объект David West, Думающий, который разрабатывает комментарий Alan Kay 'Объектного оборота, должен все же произойти'. OO является разными вещами для различных людей.. пара, что с с тем, что Ваши инструменты влияют, как Вы идете о решении проблемы. Поэтому выучите несколько языков.

Объект думая David на запад http://ecx.images-amazon.com/images/I/51hnvVxjQtL._SL500_BO2,204,203,200_AA219_PIsitb-sticker-dp-arrow,TopRight,-24,-23_SH20_OU01_.jpg

Лично я думаю, понимая, что философия, принципы и значения позади практики вместо того, чтобы подражать практике помогают много.

1
ответ дан 3 December 2019 в 00:41
поделиться

Всего понемногу. Что касается любого языка (словесный ou, программирующий), чем больше Вы будете подвергнуты ему, тем больше Вы будете учиться.

Так книги чтения, прочитанные Ваш код коллег. И по крайней мере так же важный, выучите новые языки программирования: они расширят Ваше видение, сделать Вас более критически настроенными по отношению к Вашему собственному коду и позволить Вам заново продумать свои привычки программирования.

О шаблонах разработки они - фактический стандартный способ работать вокруг типичных проблем в общих языках. Необходимо знать, что они стараются не изобретают велосипед и лучше общаются с коллегами, но необходимо также рассматривать их как работающий вокруг недостающих возможностей на языках, которые Вы используете. Шаблон конечного автомата существует только на языках, которые не обеспечивают их как builtins (не, что я знаю язык, который обеспечивает их, но Вы получаете изображение).

Я также добавил бы:

  • всегда осуществляйте рефакторинг в случае необходимости и разрешения времени (безопасный, так как у Вас есть модульные тесты для предотвращения регрессий, конечно).
  • изучите, когда избежать наследования (который является чаще, чем Вы думаете).
  • изучите, когда избежать OO (когда оно не добавляет значения).
  • не путайте OO с инкапсуляцией (который является основным преимуществом OO, но также обеспечивается другими парадигмами).
7
ответ дан 3 December 2019 в 00:41
поделиться

Это внезапно начало обретать смысл, когда я попытался уменьшить зависимости между классами, (java) пакетами и модулями, чтобы указать четкие границы модулей и убрать циклы в зависимостях. Особенно это удаление циклов принесло мне много идей. В идеале зависимости ваших классов / пакетов / модулей должны образовывать дерево.

0
ответ дан 3 December 2019 в 00:41
поделиться

Чтобы стать лучшим программистом объектно-ориентированного программирования, нужно быть более хорошим программистом.

Объектно-ориентированная технология развивалась с годами, и это во многом связано с изменением парадигм и технологий, таких как многоуровневая архитектура, сборка мусора, веб-службы и т. д. вы уже видели. Существуют фундаментальные принципы, такие как ремонтопригодность, возможность повторного использования, слабая связь, KISS, DRY, закон Амдала и т. Д., Которые вы должны изучить, прочитать, испытать и применить самостоятельно.

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

Чтобы быть более конкретным, вот некоторые из навыков, которые могут сделать человека лучшим программистом. Слушайте экспертов в предметной области. Умею писать тесты. Знайте, как разработать программное обеспечение для настольных ПК с графическим интерфейсом. Знайте, как сохранить данные в базе данных. Отдельный уровень пользовательского интерфейса и логический уровень. Знайте, как написать класс, который действует как встроенный класс. Знайте, как написать графический компонент, который действует как встроенный компонент. Знайте, как разрабатывать программное обеспечение клиент / сервер. Знать сети, безопасность, параллелизм и надежность.

Шаблоны проектирования , MVC, UML , Рефакторинг , TDD и т. Д. Решают многие из проблемы, часто творчески расширяющие ОО. Например, чтобы отделить зависимости уровня UI от логического уровня, может быть введен интерфейс для обертывания класса UI. С чисто объектно-ориентированной точки зрения это может не иметь большого смысла, но имеет смысл с точки зрения разделения уровня пользовательского интерфейса и уровня логики.

Наконец, важно также осознавать ограничения объектно-ориентированного программирования. В современной архитектуре приложений пуристский взгляд на данные + логику объектно-ориентированного подхода не всегда очень хорошо сочетается. Объект передачи данных ( Java , MS , Fowler ), например, намеренно удаляет логическую часть объекта, чтобы он несли только данные. Таким образом объект может превратиться в поток двоичных данных или XML / JSON. Логическая часть может обрабатываться как на стороне клиента, так и на стороне сервера.

0
ответ дан 3 December 2019 в 00:41
поделиться

Довольно важно, чтобы ваш дизайн кто-то рассмотрел. Просмотр и поддержка устаревшего кода поможет вам понять, что делает программное обеспечение гнилым. Мышление тоже очень важно; Одной рукой не торопитесь воплощать в жизнь первую идею. С другой стороны, не думайте обо всем сразу. Делайте это итеративно.

Регулярное чтение книг / статей, например, Эрика Эвана Model Driven Design , или изучение новых языков (Smalltalk, Self, Scala), использующих другой подход к объектно-ориентированному программированию, поможет вам по-настоящему понять .

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

1
ответ дан 3 December 2019 в 00:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: