Чужой vs Свой код

июля 23, 2011  |  Published in Уголок философа  |  5 Comments

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

Рассмотрим все плюсы и минусы использования чужих и своих решений.

Плюсы решений сторонних разработчиков:

- Значительная экономия времени на разработку.

- Вы получаете уже протестированное и проверенное решение.

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

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

- Собственное решение является более органичным относительно приложения.

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

Минусы сторонних решений:

- На пользователей сторонних решений накладываются некоторые ограничения.

- Сторонее решение невсегда хорошо вписывается в архитектуру приложения.

- Очень часто требуется очень сильно дописывать строронее решение.

- Требуется время на изучение стороннего решения.

Минусы собственных решений:

- Необходимо относительно значительное время на разработку, тестирование, исправления и рефакторинг собственного решения.
Честно говоря, мне больше нравится вариант, когда собственные решения комбинируются со сторонними. Например, мне не придет идея писать свой фреймворк, однако мне пришла идея писать свою CMS на Rails и скорее всего в ней будет использоваться собственное решение для авторизации и аутентификации, однако много чего будет взято со стороны: JQuery, возможно Apotomo  и т.д.

Очень интересно мнение читателей по поводу использования своего решения или стороннего.

Tags:

Responses

  1. demongloom says:

    июля 23, 2011 at 23:38 (#)

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

    Мне например важны вещи, на которые стоит обратить внимание при выборе стороннего кода:
    1. Насколько решение гибко позволяет себя настраивать или расширять под свою задачу. Часто архитектуры могут так расходиться или быть нерасширяемыми, что многие бросают решение и со злостью на все стороннее начинают писать свое.
    2. Является ли стороннее решение стандартом, доминирует ли оно среди прочих?
    3. Удобно ли делать интеграцию? Ведь именно тут и начинаются самые первые проблемы.

  2. Валентин says:

    июля 24, 2011 at 18:38 (#)

    смешно читать когда в минусах написано противоположно плюсов конкурента — вам не кажется, что это немного нелепо ?

    Стоило либо писать плюсы и минусы только одного решения , либо только плюсы или минусы обоих

  3. admin says:

    июля 24, 2011 at 23:32 (#)

    Валентин, с вами не поспоришь, но когда писал так не казалось.

  4. says:

    июля 25, 2011 at 07:40 (#)

    По стастистике увеличение сложности задачи на 25% приводит к увеличению служности решения на 100%. Это встречались мне в одной из книг по разработке, и в принципе я с этим согласен. С определенного момента дорабатывать готовое решение становиться «дороже», чем разрабатывать свое. Но когда готовое решение вам хоро подходит, не стоит его игнорировать — сложно тягаться с целым комьюнити, которое уже протестировало и обкатало его

  5. says:

    июля 26, 2011 at 08:37 (#)

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

Leave a Response

Для подсветки кода используйте BB - коды: [language]...[/language], где language может быть: ruby, javascript, css, html.