Стоит ли конвертировать мой функциональный код JavaScript в объектно-ориентированный дизайн? - PullRequest
6 голосов
/ 06 октября 2008

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

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

Итак, учитывая сказанное и пытаясь придерживаться принципа KISS, когда набор функций обеспечивает подходящее решение проблемы, есть ли другие причины, по которым стоит задуматься о преобразовании моего кода в объектно-ориентированный дизайн?

Ответы [ 8 ]

11 голосов
/ 06 октября 2008

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

10 голосов
/ 06 октября 2008

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

5 голосов
/ 06 октября 2008

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

Хотя было бы неплохо сказать, что программа прекрасно работает ООП и т. Д., Если ее не нужно менять для работы, я бы определенно оставил ее как есть.

Если он не сломался, не волнуйтесь:)

2 голосов
/ 06 октября 2008

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

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

Итог: если задача достаточно проста или уже выполнена, оставьте ее простой. Если это может стать более сложным, рассмотрим ООП.

1 голос
/ 06 октября 2008

Я бы сказал, что все еще стоит пересмотреть ваш код, прежде чем принимать решение. Очевидным недостатком «переписывания» кода является то, что есть затраты на тестирование, чтобы гарантировать, что ваш код работает так же, как и раньше. У вас есть какие-либо юнит-тесты? Если нет, то ваша стоимость тестирования еще выше. Так что в целом я против переписывания рабочего кода, если он не служит другой цели, что позволяет вам легче писать новые функциональные возможности, которые теперь требуются (т.е. рефакторинг общих функций и т.

ОДНАКО, всякий раз, когда человек говорит: «Я взломал вместе», я полагаю, что всегда стоит еще раз взглянуть на ваш код. Почему это было взломано вместе в первую очередь? Я знаю, что многие люди говорят, что объектно-ориентированный код не является самоцелью, но это методология, о которой через некоторое время не нужно и думать. Вы просто начинаете это делать.

Может быть, ваш js относительно прост, и поэтому использование OO scafolding действительно требует дополнительных затрат. Хорошо. Но я все же предлагаю, чтобы вы всегда проверяли код (и особенно, чтобы кто-то еще проверял) любой код, который вы называете "взломанным". Возможно, это был фрейдовский промах ... но это действительно проскальзывало.

0 голосов
/ 06 октября 2008

Просто помните, что объекты довольно дорого создавать в javascript.

Держите строительство объектов к минимуму.

0 голосов
/ 06 октября 2008

Если он работает и его легко обслуживать, я бы не стал конвертировать его ради конвертации. Должны быть более интересные вещи.

0 голосов
/ 06 октября 2008

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

ООП - молоток, пожалуйста, не рассматривайте проблему с винтом как гвоздь.

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