... и закодировали функционал "вручную"?
В качестве довольно метафорического примера, вам вряд ли понадобится библиотека для решения квадратных уравнений, хотя такие библиотеки существуют, и кто-то относится к ним серьезно.
В качестве более сомнительного случая, в зависимости от обстоятельств, я могу отказаться от jQuery (например, когда мне не нужно поддерживать некоторые браузеры каменного века): это упрощает некоторые вещи, но добавляет еще один уровень сложности и ненадежности в DOM. А чрезмерное использование jQuery приводит к абсурдным проблемам, таким как недавно обнаруженная на SO: как мне назначить пустой href a
тегу с jQuery? Оказалось, что это был вопрос HTML, даже не JavaScript.
Еще один абсурдный случай, который для многих неочевиден, - это использование какого-либо шаблонизатора / языка, созданного поверх другой шаблонизирующей системы: PHP. Третий уровень шаблонизации?
И еще один: иногда просто выплевывать XML (образно) printf
гораздо проще, чем делать это с каким-то чудовищным механизмом XML.
Есть ли другие случаи из вашего опыта?
источник
Ответы:
Большая часть корпоративной библиотеки MS и большинство сторонних элементов управления .net оставили меня с этим чувством после некоторого использования.
Ваш пробег может отличаться
источник
Windows Communication Foundation
Тот факт, что на домашней странице есть изображение швейцарского армейского ножа, подводит итог для меня. Представьте себе, что конфигурация XML примерно в четыре раза длиннее реального кода, который вы пишете, и все еще очень трудно писать SOAP-сервисы, которые могут взаимодействовать между C #, Java, PHP, Python и всеми теми другими языками, которые «предполагалось» быть совместимым с ...
Во всех будущих проектах я просто буду придерживаться REST.
источник
Одна из проблем, с которыми я сталкивался, когда люди «крутят свои собственные», заключается в том, что, хотя их подход зачастую быстрее и проще, он также более вероятен хрупок, имеет ошибки, неполон и / или содержит недостатки безопасности. ,
Простой пример: использование printf для вывода XML может быть в 10 раз проще, чем использование библиотеки:
но вы помните, чтобы избежать специальных символов в
str
? Например '<
' и '&
'? Некоторые люди могут сказать «нет, я не сделал» и продолжить писать это:Но он все равно будет испускать битый XML, если в нем
str
есть подстрока "]]>
". Крайний случай - конечно. Но все же действительный сценарий, который может привести к неожиданным проблемам с серьезными последствиями.Есть много раз и мест, где может быть уместно «кататься самостоятельно», но иногда требуется много опыта и знаний, чтобы определить, когда это уместно. Вот почему я часто призываю программистов предпочитать использовать установленные библиотеки (если они есть) вместо самореализованных процедур.
источник
Log4Net
Библиотека хорошая, но документация ужасная. То, что я хотел сделать, было излишним.
Я использовал Trace вместо.
источник
SharePoint
Не поймите меня неправильно, SharePoint - это круто, если вам нужно большинство вещей, с которыми он поставляется (и это идет с большим количеством!), Но если вы не знаете, что делаете, или вам это нужно только один или два Вещи, это МАССИВНО не стоит усилий и комплектации.
источник
ASP.NET WebForms - Хотя, как веб-разработчик .NET, это было моим трудом в течение длительного времени, так как я начал использовать инфраструктуру MVC (и из среды PHP / Smarty Template) - вы понимаете, что иногда есть только лучшие способы сделать веб-разработку и абстракция, которую он использует, излишни и неплотны .
источник
Почти во всех случаях, когда я делал это, я сожалел об этом:
Я пришел к выводу, что гораздо лучше выбрать несколько надежных сторонних фреймворков и использовать их в качестве основы для всего, что вы делаете. Эти структуры разрабатываются и отлаживаются кем-то другим, что невероятно экономит время, если вы стандартизируете их и хорошо их понимаете.
источник
System.Text.RegularExpressions
Regex такой сложный и такой медленный. Я очень редко использую Regex и обычно пишу свой собственный анализ текста и сопоставление.
Иногда я нахожу Regex полезным для действительно сложного соответствия.
источник
Не то чтобы Delphi4PHP нуждался в плохой прессе, но я попробовал это (версия 2.0), и мне было очень трудно согнуть его. Я хотел использовать его для создания веб-приложения в стиле youtube, чтобы клиенты могли просматривать обучающие видео, но оно было слишком громоздким, и когда я попытался объединить фреймворки PHP (VCL4PHP, Zend, Smarty и Recess), я столкнулся с неизбежным переименованием. все, потому что в PHP 5 нет пространства имен.
Это, как говорится, я не катил свои собственные в конце. Я использовал только что извлеченные из своих ошибок и решил сделать это очень простым и использовать CodeIgniter и FlowPlayer (с JQuery).
У меня есть желание, что независимо от того, какие фреймворки делают из PHP 5 живым, PHP 6 будет иметь несколько потрясающих фреймворков, которые на самом деле могли бы хорошо играть вместе.
источник
Weka
Я много занимаюсь машинным обучением, и если мне когда-нибудь понадобится что-то простое, например, Наивный Байес или логистическая регрессия, я люблю бросать Веку. Он имеет хорошие реализации некоторых довольно сложных алгоритмов машинного обучения, но API является жестким, чрезмерно разработанным, чрезмерно объектно-ориентированным Java-интерфейсом старой школы (pre-generics). Вещи, которые раздражают меня об этом:
Он катит свой собственный массив с изменяемыми размерами, который больше не использует, гарантируя занятую работу, конвертируя туда и обратно.
Множество последовательных связей, где методы должны вызываться в определенном порядке, и если вы действительно не будете внимательно относиться к RTFM, вы не сможете это реализовать.
Каждый экземпляр должен быть объектом Instance, и я должен явно объявить с объектом Attribute, будь то номинальный или числовой. Это приводит к большому количеству занятой работы по преобразованию данных в форму, которую хочет Weka. Это особенно раздражает, так как Weka API генерирует так много исключений, что компиляция кода не означает, что он все равно будет работать. Если бы я разрабатывал API, я был бы либерален в том, что я принимал (может быть, просто взял массив Object) и просто анализировал данные, чтобы выяснить, что я получил и что с этим делать правильно.
источник
На конкретный проект я отказался от EJB3. Это дало мне внедрение зависимостей и обработку транзакций, управляемых контейнером. Но он вводит огромные зависимости (например, JBoss) и делает систему трудной для написания автоматических тестов. Теперь я сократил это до внедрения зависимостей в конструктор JPA +.
источник
Выкладывание HTML на порт отладки в приложении. Мне нужен был простой способ получить текущие данные (с автоматическим обновлением). Вытащить библиотеку для форматирования было бы хорошо, но было проще просто распечатать ее.
Я также отказался от библиотеки для другого: мы используем большую, сложную библиотеку XML в большинстве наших вещей. Потратив 4 часа один день на то, чтобы заставить его работать в новом приложении, я просто сказал «упаковай вещи» и взял TinyXML. Это далеко не так мощно, но требуется гораздо меньше усилий, чтобы сделать простые вещи.
источник
Недавно я работал над компилятором языка сценариев, который я могу использовать в своих приложениях. Я использовал других, но никто не делает именно то, что мне нужно. Поэтому я решил, почему бы не попробовать написать свой собственный? Может пройти год или два, прежде чем он действительно пригоден для общего пользования, но это нормально. Плюс, это большой опыт обучения.
Еще одно решение - «катайся сам» - это кусочки, используемые для перевода моих приложений. Есть существующие библиотеки, но мне не понравилась ни одна из них. Поэтому я сделал свой собственный.
И компоненты базы данных Delphi. Я ненавижу их. Всегда есть. Поэтому я создал свой собственный интерфейс базы данных, который работает так, как я хочу, чтобы он работал (и точно так же, как тот, который я сделал для PHP, облегчая кодирование на разных языках).
По сути, когда мне дают возможность, я обычно делаю свою собственную библиотеку.
источник
Ооо, так много. Я работал над несколькими гибкими проектами с использованием API с открытым исходным кодом. Здорово, когда они работают, но часто мы страдаем от фетиша разработчиков за то, что они вводят все виды сторонних API, некоторые неясны, некоторые нет, просто потому, что они хотят использовать в них один или два класса. Конечный результат - смесь кода и взломанных систем. Они передают его, утверждая, что это лучший код за всю историю, уходят, а плохие слюни, взявшие его, обнаруживают непонятный, недокументированный беспорядок, полный проблем с зависимостями и хаков.
источник