Окрема вкладена функція, якщо дати їй нормальну назву, сприймається краще.
Якщо. Часто сконструювати осмислене однозначно зрозуміле унікальне ім'я складніше, ніж написати код, який під цим ім'ям виконується. Короткі імена недостатньо інформативні, довгі можуть нести більше інформації, але не забуваймо, що це ім'я використовується в двох місцях — якщо в голову прийшла ідея назвати одноразову функцію якось більш осмислено, треба бути обережним, щоб не відредагувати щось не те. Якщо ж одне й те ж ім'я використовується в різних областях видимості, дуже легко зробити помилку й викликати не ту функцію.
Щоб зробити код читабельнішим, для разової дії краще написати коментар, який виконує суто інформативну роль і не може викликати подібних конфліктів.
Економія імен: чим менше іменованих об'єктів у коді, тим менша ймовірність конфлікту імен (напр., якщо ми підключимо модуль, що містить функцію з таким же ім'ям, то ім'я власної функції в програмі доведеться змінювати — уникаючи зайвих імен, ми уникнемо й необхідності робити подібні виправлення) і важче сплутати одне ім'я з іншим.
Вихід із кількох рівнів вкладеності: маю на увазі щось назразок такого:
function f:char;
begin
...
var i: integer;
begin
...
var c:char;
begin
...
result=c;
exit;
end;
...
end;
...
end;
У випадку, якщо кожен вкладений блок зі змінними реалізувати як окрему вкладену функцію, ми не зможемо використати exit у вкладеній функції для виходу з зовнішньої функції.