Здравствуйте, Khimik, Вы писали:
K>А в других языках они есть? Я пока не начал это осваивать, но вроде понятен их смысл – можно прикрутить к любому типу, например, integer, какую-то функцию, например GetFactorial, и писать в коде fact1:=12.GetFactorial;
В C# есть
Extension Methods.
K>Очевидно, хелперы можно применить для моей задачи – прикрутить их напрямую к классу TStream. Но я слышал, что использование хелперов опасно, поскольку оно противоречит парадигме ООП. Хотелось бы узнать об этом подробнее.
В .NET на методах расширения LINQ сделан, польза там есть на лицо. Не думаю что в Delphi от хелперов есть какая-то опасность, хелперы не добавляют к классам/записям дополнительное состояние, хотя могут менять внутренее.
K>Мне кажется, главная опасность использования хелперов с классами возникает там, где есть динамические функции. И я думаю, что для избегания этих проблем я буду делать так: все функции, реализованные через хелперы, будут иметь название, начинающееся с hf, например myfilestream1.hfWriteBoolean();
Имхо, префиксы в названиях неинформативны и наоборот затрудняют понимание кода, да и в библиотеке Delphi к названиям методов/функций префиксы нигде не добавляются.