Уже давно, и даже очень давно, пришёл к такой практике: а) метод FindSomething может вернуть nil (если не нашёл) б) метод GetSomething не может вернуть nil
Ну и реализация метода Get сводится к вызову Find и проверки результата на nil (если nil - exception). Есть, конечно, и другие сценарии, типа FindOrCreate, либо, например, такое:
function FindX(const ASearchParams: ..; var AnInstance: ..): Boolean;
И где-то в коде: if FindX(A, B) and FindY(B, C) then C.Hello else NotFound;
-- Вот про сеттеры и геттеры интересней заметка. Но тут в двух словах все мысли не выразить.
Уже давно, и даже очень давно, пришёл к такой практике:
ОтветитьУдалитьа) метод FindSomething может вернуть nil (если не нашёл)
б) метод GetSomething не может вернуть nil
Ну и реализация метода Get сводится к вызову Find и проверки результата на nil (если nil - exception).
Есть, конечно, и другие сценарии, типа FindOrCreate, либо, например, такое:
function FindX(const ASearchParams: ..; var AnInstance: ..): Boolean;
И где-то в коде:
if FindX(A, B) and FindY(B, C) then
C.Hello
else
NotFound;
--
Вот про сеттеры и геттеры интересней заметка. Но тут в двух словах все мысли не выразить.
Я тоже стараюсь nil не возвращать, но есть много всяких "но".
УдалитьПро геттеры я тоже читал. Есть о чём подумать. Не могу сказать, что со всем согласен.