Приближается версия Far.Net с вполне реализованной функциональностью редактора (надеюсь, на этой неделе в выходные).
В связи с этим хотелось бы внести некоторые изменения в открытый интерфейс с целью улучшения дизайна и кое-каких мелочей. Это потребует изменений (типа переименований) в коде возможно уже существующих плагинов или скриптов. Но лучше сделать это сейчас, накануне относительно работоспособной версии, чтобы потом уже было удобнее.
В различных объектах редактора используется свойство Text, которое имеет различный тип в зависимости от объекта. В одних случаях это IStrings (в сущности список strings), в других случаях это string. Там, где Text это IStrings, по соседству существует свойство AsString, которое string. А там, где Text это string, исторически тоже существует свойство AsString, которое просто дублирует Text.
Кажется, это немного запутано с точки зрения понимания, стиля и даже удобства (неудобно двойное свойcтво string Text и AsString, например, в PowerShell, так как при выводе данных объекта ILine один и тот же текст выводится дважды, свойства-то два, хоть они и одинаковые). Да и двойное слово AsString неудобно для написания в таких чрезвычайно часто используемых операциях, как получение\запись содержимого редактора, выделенного текста или отдельной строки или выделенной части строки. (Прим.: во всем .NET я не нашел свойства, названного AsString, свойств же Text, которые string - полно).
Предложение такое: свойство Text - это всегда string (в ILines - это объединенный текст всех строк, в ILine - это текст самой строки), а свойство типа IStrings назовем, скажем, Strings, то есть:
Code: Select all
ILine // было
property string Text
property string AsString
ILine // будет
property string Text
ILines // было
property string AsString
property IStrings Text // имя не звучит как коллекция, хотя это коллекция строк
ILines // будет
property string Text
property IStrings Strings // теперь это звучит как коллекция, чем и является
Кроме того, уже давно существует свойство Lines для ILines, поэтому Strings для IStrings будет в том же стиле.
Если возражений нет, в следующей версии будет так.