Кажется, нет причины для одного над другим
Несколько веских причин для использования именованных аргументов:
Код легче понять с первого взгляда, особенно когда аргумент равен false
или null
или 0
или ""
и так далее.
Именованные аргументы хорошо работают с необязательными аргументами. Метод, который принимает дюжину аргументов, может иметь упрощенный сайт вызова, если вам просто нужно указать несколько из них.
Код надежен перед лицом изменения порядка рефакторинга на ранней стадии разработки. Если вы вносите решающее изменение перед выпуском клиентам, измените:
void M(int width, int height)
до
void M(int height, int width)
тогда весь код, который сказал
M(height: 123, width: 456);
все равно будет правильным, но код, который сказал
M(123, 456);
нужно будет обновить.
Аналогично, это делает код устойчивым перед лицом изменения этого метода, который задает прямоугольник:
M(int top, int bottom, int left, int right)
к этому методу:
M(int top, int height, int left, int width)
очевидное переломное изменение. Код
M(top: 10, bottom: 20, left: 30, width: 40)
выдаст ошибку при изменении метода. Этот код не будет, и изменяет поведение:
M(10, 20, 30, 40);