Необходимо взглянуть xHTML ДАТЫ , они все перечислены. Вот является быстрый обзор всеми основными:
.1. Должен ли я объявлять типы для моих параметров, полей и т. Д.?
Я обычно объявляю типы для классов, которые используются как часть общедоступного API, вещей, которые другие разработчики будут использовать много, или где мне нужно дополнительное автозаполнение помощь от IntelliJ. В противном случае я «определяю» вещи
.2. Должен ли я объявлять блок кода как закрытие, когда подойдет простой метод?
Я использую методы, если только это не то, что я планирую передавать как переменную. Несмотря на то, что существует оператор разыменования метода "foo. & Bar", большинство разработчиков не знают об этом и сбиваются с толку, когда сталкиваются с ним. Я также использую замыкания, когда это небольшой фрагмент кода, который явно должен оставаться в более крупном методе, а не помещать его в собственный метод для наглядности.
.3. Когда следует использовать утиную печать вместо полиморфной динамической отправки. Например, в Groovy я могу сделать animal. "$ Action" () или def animal; animal.action () вместо Animal animal = new Dog (); animal.action (). Я вижу проблему с первым в контексте принципа открытого-закрытого, но есть ли другие причины для предпочтения полиморфизма в стиле объектно-ориентированного программирования?
Я использую только форму animal. "$ Action" (), когда мне нужен такой уровень косвенности, потому что имя метода зависит от пути выполнения кода (чаще всего при тяжелом метапрограммировании). Я использую Animal animal = new Dog (); animal.action (), когда мне нужна помощь среды IDE с автозаполнением, или если такой уровень документации полезен для ясности кода (и мне не мешает чрезмерная многословность, которая может быть очевидной или сдерживающей).
.4. Когда мне следует использовать интерфейсы в Groovy (если вообще)?
Я очень редко их использую. Я мог видеть их использование в основном как документацию по ожидаемым полям для вызова общедоступного API или, возможно, как интерфейс маркера, чтобы помочь отличить один набор классов от другого с точки зрения метапрограммирования. В Groovy они гораздо менее полезны, чем в java.
Я думаю, что с Groovy вам следует отдать предпочтение простейшему способу выполнения чего-либо и прибегать к более простым функциям только в случае призывает к этому. (Например, при написании макросов или создании мультиметодов в Clojure, если вы обнаружите, что часто обращаетесь к этим инструментам, вы должны сомневаться в себе.) Мне кажется, что ваш осторожный подход хорош, возможно, ваши коллеги немного опьянены своей новообретенной силой . (Это будет не в первый раз.)
Преимущество гибкого языка, такого как Groovy, заключается в том, что вы можете начать с осторожного подхода, как будто вы предпочитаете знать, что у вас есть более мощные альтернативы, к которым можно прибегнуть, когда они вам понадобятся. . Вы знаете, «самая простая вещь, которая могла бы сработать».
Все сводится к тому, что людям удобно. Мне нравится использовать деклерацию типов и вызовы методов, потому что я хорошо владею Java. Код, который я пишу, должен поддерживаться людьми, не имеющими большого опыта в динамическом программировании, поэтому я стараюсь приближать его к обычному коду Java, если только нет веских причин для использования расширенной функции Groovy. Похоже, ваша группа должна создать стандарты кодирования, которые пытаются объяснить, когда обычно следует использовать определенные функции Groovy.
м комфортно на Яве. Код, который я пишу, должен поддерживаться людьми, не имеющими большого опыта в динамическом программировании, поэтому я стараюсь приближать его к обычному коду Java, если только нет веских причин для использования расширенной функции Groovy. Похоже, ваша группа должна создать стандарты кодирования, которые пытаются объяснить, когда обычно следует использовать определенные функции Groovy. м комфортно на Яве. Код, который я пишу, должен поддерживаться людьми, не имеющими большого опыта в динамическом программировании, поэтому я стараюсь приближать его к обычному коду Java, если только нет веских причин для использования расширенной функции Groovy. Похоже, ваша группа должна создать стандарты кодирования, которые пытаются объяснить, когда обычно следует использовать определенные функции Groovy.Существует два основных типа объектно-ориентированных языков.
Языки семейства Simula 67 , такие как C ++ и Java, отдают предпочтение статически типизированным переменным, компиляторы и компоновщики, а также методы vtables.
Языки семейства Smalltalk , такие как Ruby, отдают предпочтение динамически типизированным переменным, интерпретации и передаче сообщений вместо таблиц-указателей на функции.
] Оба объектно-ориентированные, но очень разные интерпретируют концепцию объектной ориентации.
ДА
-
НЕТ
Вы понимаете, что на этот вопрос нет настоящего ответа?
Это не всегда популярное мнение, но я думаю, что чем более ясным и ясным может быть ваш код, тем лучше.
Мне не нравятся конструкции, которые заставляют вас гадать, что происходит ...
Я год проработал в Ruby, и он мне совсем не понравился. Я не говорю, что у нее нет мест, где она выделяется, я просто говорю, что мне очень нравится сохранять чистоту и ясность, и я не чувствовал, что у Руби это было целью.
Одно, что я действительно выяснил наверняка - количество набираемого вами текста не соответствует общей скорости разработки. Это правда, что сложная кодовая база с большим количеством повторяющегося кода приводит к очень медленной разработке, но просто сокращать набираемый вами текст без устранения дублирования бесполезно, а вводить дольше, яснее, более явный код обычно будет быстрее (на протяжении всего проекта), чем тот же код, написанный на кратком, менее формальном языке.
Если вы не уверены, что набор текста не имеет отношения к скорости разработки, в следующий раз при выпуске проекта подсчитывается количество строк кода и делится на затраченные человеко-дни (включая отладку и тестирование). Другими словами, сколько кода набиралось за день. Вы обнаружите, что результатом будет очень небольшое число - на самом деле набор кода - очень небольшая часть любого программного проекта.
сколько кода набиралось в день. Вы обнаружите, что результатом будет очень небольшое число - на самом деле набор кода - очень небольшая часть любого программного проекта. сколько кода набиралось в день. Вы обнаружите, что результатом будет очень небольшое число - на самом деле набор кода - очень небольшая часть любого программного проекта.