А если это будущий модуль или библиотека? А если я планирую текст сохранить с расширением .cs ? Есть такое понятие - “навязчивый сервис”. Не хотелось бы вспоминать о нем в среде PascalABC.NЕТ.
Тоже вариант, хотя благодаря куче управляемых .Net и экспорту уймы неуправляемых библиотек, единственный раз чисто для эксперимента пробовал создать библиотеку “рециркулируемых” процедур в упрощённом стиле, но пока даже не вижу смысла - всё основное и нужное уже придумано.
Так как декларация теперь свободная и в произвольном месте, важно иметь в виду именно объявления переменных, например, выделенных подчёркиванием. Или же как вкладка со списком инициализации и возможностью перейти к конкретной строке в тексте, но так чуть сложнее.
Слушайте, что я накропал вчера ночью при колеблющемся свете электрической лампы:
«Я помню чудное мгновенье, передо мной явилась ты, как мимолетное виденье,
как гений чистой красоты». Правда, хорошо? Талантливо? И только на рассвете,
когда дописаны были последние строки, я вспомнил, что этот стих уже написал
А. Пушкин.
И.Ильф, Е.Петров. "Золотой теленок"
А можно узнать - зачем? Переменная объявляется непосредственно перед или при своем первом использовании. А дальше достаточно навести на нее курсор - и Intellisence все про нее расскажет. Зачем вместо этого выделять куски текста? Мало других выделений, хочется, чтобы вообще в глазах все запестрело? Представьте книгу, в которой множество выделений - гарнитурой шрифта, подчеркиваниями, размером, обводками, … да я бы чокнулся от такого чтения! А Вы - нет?
var
уже выделяется жирным… Но всё же, зачем там вообще какое то выделение/список переменных?
Александр, может лично у Вас иначе, но обычно в библиотеки выносят необходимые и часто повторяемые процедуры и функции (и реже типы и константы), что на практике явно чаще 1:1000 в пользу обычных программ, где можна по памяти или с заготовки вставить нужное и сразу проверить или получить результат.
Что касается объявлений, кроме var ещё много ключевых слов, от которых у некоторых может рябить текст, поэтому разбирая старый или чужой код я часто распечатываю и выделяю подчёркиванием объявления, чтобы легче ориентироваться.
Ну, что же, просто старая привычка и, видимо, мало кому ещё интересно или полезно. Вопрос снят.
Только у вас (и вообще не правда, ибо в библиотеках на самом деле нет ничего кроме типов). И вообще это плохо. Если уже делаете библиотеку работающую только с типами из других библиотек, не создающую ничего своего, даже враперов… Надо, по крайней мере, позапихивать эти подпрограммы в статичные классы. А то мусорка доисторического стиля получается.
Вы, возможно, не до конца понимаете смысл публикации предложений и замечаний на форуме. Их пишут для обсуждения. А решения по ним принимают разработчики. Остальные просто высказывают свое мнение по поводу опубликованного. Если что-то неинтересно лично мне или еще кому-то, это вовсе не означает, что предложение плохое или замечание несущественное. Это лишь конкретное мнение конкретного человека.
Я пишу такие книги. К счастью, их никто не читает. Тогда откуда берутся чокнутые?
Значит, все же читают!
Summary
Если Вы - Валерий Рубанцев, особенность ваших книг в том, что в каждой серии рассмотрены аналогичные задания на различных языках, с учётом специфики. У нас в школе была ксерокопия книги или методички, где задачи были параллельно на Бейсике, Паскале, Си, и вроде бы Фортране, а уместное сравнение всегда полезно и познавательно.
Александр, Вы правы: в идеале нужно чётко представлять и продумать весь проект используя верный подход и только чистые (“идеальные”) функции и процедуры, которые оперируют лишь параметрами, не учитывая и не изменяя внешние значения и данные.
Summary
Но это только в идеале, а на практике приходится быстро решать подзадачи по диспетчеризации отдельный узкопрофильных приложений на разных языках, ОС и компьютерах.
Я считаю, что фирменная особенность Паскаля в том, что всегда есть “Содержание” - перечень всех констант и переменных, без рыскания по коду. Возможно, это всего лишь устаревший взгляд и даже вредная привычка, так что всё нормально.
Извините, не понял, о чем это Вы.
Раздел Const и Var, разумеется.
Summary
Часто зная задачу можно лишь по количеству переменных оценить эффективность программы, а по названиями и типам переменных (и процедур / функций) - продвинутость самого автора.
Видите ли, наличие раздела var в Паскале - это уже глубокая история. Сейчас так не пишут. Еще раз: переменная описывается непосредственно перед или при первом использовании. Именно поэтому описатель var разрешено использовать везде, а не выносить за пределы основной программы. Даже такой язык, как бейсик - и тот давно перешел к концепции описания переменных по мере их использования.
Это что-то запредельное, для людей с экстрасенсорными способностями.
Я так пишу от лени.
Круто! Я вот от лени вообще никак не пишу.
У Вас просто ранняя стадия лени. На более взрослых стадиях становится лень лениться, и тогда начинаешь лениво писать книги. От ленивой лени обычно получаются интересные книги, которые самому не лень почитать.
Вообще программируют всё от лени делать всё руками
В конце-концов, неприлично делать самому то, что можно поручить другому. Даже если этот другой - компьютер.
Как насчёт добавить такую функцию в PABCSystem
?:
function Distinct<T1,T2>(self: sequence of T1; selector: T1->T2): sequence of T1; extensionmethod;
begin
var prev := new HashSet<T2>;
foreach var a in self do
if prev.Add(selector(a)) then
yield a;
end;
Необходимость такая же, как у .MaxBy
, то есть возможность получить результат, исходя из проекции элементов, вместо самих элементов.
Стандартный .Net-овский .Distinct
выглядит примерно так же (это перевод на паскаль, но оригинальный работает точно так же):
function Distinct<T>(self: sequence of T): sequence of T; extensionmethod;
begin
var prev := new HashSet<T>;
foreach var a in self do
if prev.Add(a) then
yield a;
end;