Можно ли в дальнейшем встраивать лучшие практики в языки программирования? - PullRequest
2 голосов
/ 10 сентября 2010

Например, в c # модификаторы доступа реализуют скрытие информации по умолчанию (предоставляя классам и полям максимально ограниченный доступ, возможный по умолчанию).
В ASP.NET у вас есть app_code и app_data как библиотеки, «встроенные»Ваш веб-сайт.
ASP.NET MVC делает еще один шаг и «заставляет» использовать MVC.
Я не знаю, как это происходит на разных языках.

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

Редактировать: Может быть, мне следовало бы спросить: «Можете ли вы придумать, как программировать языки и структуры для внедрения этих концепций?»

Я спрашиваю по двум причинам - во-первых, любопытство.И во-вторых, я думаю, что ответы на этот вопрос могут составить «практические правила» о том, как реализовать эти концепции.

Спасибо.

Ответы [ 7 ]

3 голосов
/ 10 сентября 2010

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

Однако сложнее сказать В какой степени технология может подтолкнуть программиста к продвижению или даже внедрению хорошего дизайна.Я подозреваю, что ответ здесь зависит от того, какую «лучшую практику» вы смотрите.Существуют передовые практики, которые могут применяться правилами языка лучше, чем другие:

Возьмем, к примеру, распространенное мнение о том, что состав и агрегацию следует отдавать предпочтение перед наследованием.Язык ОО может применять это различными способами, начиная с:

  • , полностью запрещающего наследование;

  • , запрещающего иерархии классов определенной глубины (например,вы не можете наследовать от класса, который уже является производным классом, тем самым разрешая наследование только на один уровень глубины);

  • , запрещающий наследование при одновременной возможности реализации интерфейсов.

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

Другие распространенные передовые практики - на самом деле я подозреваю, что наиболее полезные передовые практики - такие как СУХОЙ (не повторяйся), SRP (принцип единой ответственности) и т. Д. Могут быть неосуществимыязык.

1 голос
/ 10 сентября 2010

Как я всегда говорю: «Язык может показать вам только путь, он должен быть вашим выбором, если вы последуете по нему»

Здесь ваши навыки как программиста могут изменить ситуацию.

1 голос
/ 10 сентября 2010

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

Нет. Только человеческий разум может решить это.

0 голосов
/ 10 сентября 2010

Поощряйте -> да.

Force it-> no.

Я видел пару очень ужасных источников в RoR и asp.net mvc.

0 голосов
/ 10 сентября 2010

Я помню, как начал работу, разделив офис с консультантом.Я помню, как он звонил другу с вопросами типа «Можете ли вы объяснить, как Windows создает процесс? Здесь говорится, что он также создает поток, чем он отличается от UNIX?»Ему нравились такие слова, как «лучшие практики».

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

0 голосов
/ 10 сентября 2010

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

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

0 голосов
/ 10 сентября 2010

Помимо помощи в выполнении вашей работы, это работа почти всех фреймворков. Проверьте, что Ruby on Rails , Django , Java EE , и вы точно увидите, что я пытаюсь сказать.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...