Каким методам кодирования ООП необходимо всегда уделять время?

Я столкнулся с той же проблемой при создании таблицы.

sqlContext.sql("CREATE TABLE....

Я мог видеть много записей для ps -ef | grep spark-shell, поэтому я убил их всех и перезапустил spark-shell. Это сработало для меня.

13
задан George Stocker 8 April 2009 в 20:46
поделиться

19 ответов

Не ООП, но практикой, которая помогает и в коротком и в длительный период, является DRY, не Повторяйте Себя. Не используйте скопировать/вставить наследование.

19
ответ дан 1 December 2019 в 17:12
поделиться

Учитесь "осуществлять рефакторинг as-you-go". Главным образом с "точки зрения" метода извлечения. Когда Вы начинаете писать блок последовательного кода, занимать несколько секунд, чтобы решить, мог ли этот блок автономный как допускающий повторное использование метод и, если так, сразу сделать тот метод. Я рекомендую это даже для одноразовых проектов (особенно, если можно возвратиться позже и скомпилировать такие методы на персональную панель инструментов API). Это не занимает много времени, прежде чем Вы сделаете это почти без взглядов.

, Надо надеяться, Вы уже делаете это, и я проповедую хору.

0
ответ дан 1 December 2019 в 17:12
поделиться

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

0
ответ дан 1 December 2019 в 17:12
поделиться

Фактическая практика ООП, которой я всегда уделяю время, Единственный Принцип Ответственности , потому что становится настолько более трудно правильно осуществить рефакторинг код позже, когда проект "жив".
Путем придерживания этого принципа я нахожу, что код, который я пишу, легко снова используется, заменяется или переписывается, если ему не удается соответствовать функциональным или нефункциональным требованиям. Когда Вы заканчиваете с классами, которые имеют несколько обязанностей, некоторые из них могут выполнить требования, некоторые не могут, и целое может быть совершенно неясным.

Эти виды классов напряжены для поддержания, потому что Вы никогда не уверены, что повредит Ваша "фиксация".

1
ответ дан 1 December 2019 в 17:12
поделиться

Точно так же, как все другие предположили, что эти рекомендации не характерны для ООП:

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

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

я также рекомендовал бы, чтобы, если обычно необходимо работать к жестким срокам, вовлеките себя библиотека кода, созданная основанный на наиболее распространенных задачах. Это позволит Вам "присоединяться к точкам", вместо того, чтобы изобрести велосипед каждый раз у Вас есть проект.

С уважением,

Docta

1
ответ дан 1 December 2019 в 17:12
поделиться

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

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

1
ответ дан 1 December 2019 в 17:12
поделиться

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

1
ответ дан 1 December 2019 в 17:12
поделиться

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

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

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

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

Кодирование себя довольно быстро и легко, отлаживая дерьмо, которое кто-то записал, когда они испытывали "Давление", то, что берет все время!

1
ответ дан 1 December 2019 в 17:12
поделиться

[вставьте шаблонное не-ООП определенный протест здесь]

  • Разделение проблем, модульных тестов, и что чувство, что, если что-то слишком сложно, это совершенно верно еще, вероятно, не осмысляло.

  • рисование эскизов UML: это разъяснило и сохранило любое количество потраченного впустую усилия так много раз. Изображения являются замечательными, не они? :)

  • Действительно взгляды о - a и имеют - a. Получение в этот правильный первый раз так важно.

1
ответ дан 1 December 2019 в 17:12
поделиться

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

Мой персональный рейтинг - это:

  1. управление исходным кодом Использования и на самом деле пишут комментарии фиксации. Таким образом, у Вас есть крошечный бит документации, необходимо ли когда-либо задаваться вопросом, "какого черта я думал, когда я записал это?"
  2. Пишут чистый код или документ. Уберите для правильно написанного кода должно быть нужным мало документации, как это означает, может быть схвачен от чтения его. Взломы являются существенно иными. Запишите, почему Вы сделали это, что Вы делаете и что требуется сделать, если бы у Вас был time/knowledge/motivation/..., чтобы сделать это право
  3. Модульный тест. Да это снижается на номере три. Не потому что это неважно, но потому что это бесполезно, если у Вас нет других двух, по крайней мере, промежуточными завершенный. Запись Модульных тестов является другим уровнем документации, что Вы кодируете, должен делать (среди других).
  4. Осуществляют рефакторинг перед добавлением чего-то. Это могло бы походить на типичное, "но у нас нет времени для него", указывают. Но как со многими из тех точек это обычно экономит больше времени, чем это стоит. По крайней мере, если у Вас есть по крайней мере некоторый опыт с ним.

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

2
ответ дан 1 December 2019 в 17:12
поделиться

Приложение единственного принципала ответственности. Эффективно применение этого принципала генерирует много положительных внешностей.

2
ответ дан 1 December 2019 в 17:12
поделиться

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

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

никакой общедоступный класс с изменяемыми (подобными структуре) общедоступными переменными.

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

, Если тот день перед Вашей датой выпуска, это становится более грязным.

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

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

5
ответ дан 1 December 2019 в 17:12
поделиться

Модульные тесты - помогают Вам спать ночью :-)

7
ответ дан 1 December 2019 в 17:12
поделиться

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

8
ответ дан 1 December 2019 в 17:12
поделиться

Управление исходным кодом Использования .

, Неважно, сколько времени это берет для установки (секунды..), это будет всегда делать Вашу жизнь легче! (все еще это не связанное ООП).

9
ответ дан 1 December 2019 в 17:12
поделиться

Не практика ООП, но здравый смысл ;-).

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

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

13
ответ дан 1 December 2019 в 17:12
поделиться

Как все остальные, не столько методов ООП, так же как методы для кодирования, которые относятся к ООП.

  1. Модульный тест, модульный тест, модульный тест. Определенные модульные тесты имеют привычку к хранению людей на задаче и "не блуждании" бесцельно между объектами.
  2. Определяют и документ вся иерархическая информация (пространства имен, пакеты, структуры папок, и т.д.) до написания производственного кода. Это помогает изложить в деталях объектные отношения и выставить дефекты в предположениях, связанных с отношениями объектов.
  3. Определяют и документ все применимые интерфейсы до написания производственного кода. Если сделано выводом или архитектором, эта практика может дополнительно помочь сохранить больше разработчиков младшего уровня на задаче.

существуют, вероятно, бесчисленные другие "shoulds", но если бы я должен был выбрать свои лучшие три, которые были бы списком.

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

2
ответ дан 1 December 2019 в 17:12
поделиться