У Вас может быть слишком много “динамических” на динамических языках?

Необходимо взглянуть xHTML ДАТЫ , они все перечислены. Вот является быстрый обзор всеми основными:



11
задан Dan 9 December 2009 в 20:53
поделиться

6 ответов

.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.

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

Я думаю, что с Groovy вам следует отдать предпочтение простейшему способу выполнения чего-либо и прибегать к более простым функциям только в случае призывает к этому. (Например, при написании макросов или создании мультиметодов в Clojure, если вы обнаружите, что часто обращаетесь к этим инструментам, вы должны сомневаться в себе.) Мне кажется, что ваш осторожный подход хорош, возможно, ваши коллеги немного опьянены своей новообретенной силой . (Это будет не в первый раз.)

Преимущество гибкого языка, такого как Groovy, заключается в том, что вы можете начать с осторожного подхода, как будто вы предпочитаете знать, что у вас есть более мощные альтернативы, к которым можно прибегнуть, когда они вам понадобятся. . Вы знаете, «самая простая вещь, которая могла бы сработать».

2
ответ дан 3 December 2019 в 10:26
поделиться

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

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

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

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

Существует два основных типа объектно-ориентированных языков.

Языки семейства Simula 67 , такие как C ++ и Java, отдают предпочтение статически типизированным переменным, компиляторы и компоновщики, а также методы vtables.

Языки семейства Smalltalk , такие как Ruby, отдают предпочтение динамически типизированным переменным, интерпретации и передаче сообщений вместо таблиц-указателей на функции.

] Оба объектно-ориентированные, но очень разные интерпретируют концепцию объектной ориентации.

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

ДА

-

НЕТ

Вы понимаете, что на этот вопрос нет настоящего ответа?

-1
ответ дан 3 December 2019 в 10:26
поделиться

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

Мне не нравятся конструкции, которые заставляют вас гадать, что происходит ...

Я год проработал в Ruby, и он мне совсем не понравился. Я не говорю, что у нее нет мест, где она выделяется, я просто говорю, что мне очень нравится сохранять чистоту и ясность, и я не чувствовал, что у Руби это было целью.

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

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

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

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

6
ответ дан 3 December 2019 в 10:26
поделиться
Другие вопросы по тегам:

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