Результат: ученик проектирует статические методы с одной ответственностью, явными зависимостями и контрактами, выбирает канал результата и понимает разрешение перегрузок и способы передачи аргументов.
Содержание:
-
Объявлять и вызывать метод
- возвращаемый тип;
- имя метода;
- параметры и их типы;
- аргументы вызова;
- тело и
return; voidдля действия без возвращаемого значения;- локальное состояние отдельного вызова.
-
Разделять вычисление и представление
- чистый вычисляющий метод;
- метод с наблюдаемым побочным эффектом;
- отсутствие консольного ввода-вывода в вычислительном ядре;
- композиция результатов нескольких методов;
- одна ответственность вместо случайного деления по числу строк.
-
Понимать сигнатуру и перегрузку
- имя, число параметров, их типы и способы передачи;
- возвращаемый тип не различает перегрузки;
- имена параметров не создают новую сигнатуру;
- выбор наиболее подходящей перегрузки;
- допустимые неявные преобразования;
- неоднозначный вызов и его устранение.
-
Использовать именованные и необязательные аргументы
- связывание аргумента по имени;
- изменение порядка именованных аргументов;
- обязательные параметры перед необязательными;
- значение по умолчанию, известное вызывающему коду;
- сохранение понятного и однозначного API.
-
Проследить передачу по значению
- копия значения аргумента в параметре;
- независимое изменение параметра значимого типа;
- локальная замена параметра;
- сохранение переменной вызывающего кода;
- продолжение этих правил для ссылок, подробно изучаемое в Разделе 16.
-
Выбирать
out,refиinoutдля обязательного присваивания выходного результата;refдля чтения и изменения существующей переменной вызывающего кода;inдля передачи без переприсваивания параметра;- требования к переменной в месте вызова;
- отличие нескольких выходов от скрытого глобального состояния.
-
Возвращать несколько связанных значений
- именованный кортеж;
- доступ по именам и
ItemN; - деконструкция;
- отбрасывание элемента через
_; - выбор между кортежем, несколькими
outи будущим собственным типом.
-
Проектировать контракт метода
- предусловия;
- постусловия;
- побочные эффекты;
- изменяемые аргументы;
- поведение при недопустимом входе;
- согласованность всех выходных значений.
-
Использовать контракт
Try...- результат
boolкак признак успеха; - выходные параметры только как согласованный результат;
- определённое значение
outна каждом пути; - ожидаемый неуспех без исключения;
- разделение проверки и дальнейшего вычисления.
- результат
-
Строить процедурный API
- минимальное число взаимно согласованных операций;
- явный поток данных между методами;
- отсутствие глобального изменяемого состояния;
- одинаковая терминология в именах;
- независимая проверяемость каждого вычисляющего метода.

