2010-02-17 5 views
1

На днях я наткнулся на довольно старый пост Usenet от Linus Torwalds. Это печально известное сообщение «Вы полны бычьего ****», когда он защищает свой выбор использования простой C для Git над чем-то более современным.Абстракция или нет?

В частности, this post заставило меня задуматься о огромном количестве слоев абстракции, которые накапливают один над другим, где я работаю. Mine - это среда Windows .Net. Я должен сказать, что мне нравится C# и среда .Net, это действительно облегчает большинство вещей.

Теперь я исхожу из совершенно другого фона, сделанного из технологий Unix, таких как C, и множества языков или скриптов; для меня, также, ООП - это только одна, а не всегда лучшая парадигма программирования. Я часто борюсь (в рабочем виде, конечно!) с моими коллегами (в частности), потому что они, похоже, «любая проблема может быть решена с помощью дополнительного уровня абстракции», в то время как я больше занимаюсь «поддержанием ее простой» школы. Я думаю, что существует очень иной ментальный подход к проблемам, который, возможно, происходит от воздействия различных культур.

Как очень простой пример, для первого проекта, который я здесь сделал, мне нужна была некоторая конфигурация для приложения. Я создал класс из 10 строк для загрузки и анализа файла txt, который должен быть расположен в корневом каталоге программы, содержащем пары ключ/значение, разделенные двоеточием, по одному в строке. Это сработало.

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

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

Что вы думаете об этом? Можете ли вы указать какую-то интересную ссылку на проблему?

Благодаря

+1

Что вы хотите сказать? Вы спрашиваете конкретно об этом коде конфигурации? –

+2

Опросы общественного мнения должны быть wiki сообщества. – 2010-02-17 15:16:43

+1

Добавление слоев абстракции * это * сохранение его просто. Точка дополнительной абстракции - это упрощение вещей на другом уровне. –

ответ

0

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

Позиция Торвальдса не абсурдна, но он экстремист.

1

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

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

Версия «экстремального программирования»: не абстрактно, пока у вас нет тестовых примеров, которые нарушают вашу программу. Если вы считаете, что инвариант может быть нарушен, напишите случай, который сначала разбивает его.

Смежные вопросы