Какие соглашения существуют для упорядочения аргументов в методах? - PullRequest
6 голосов
/ 16 октября 2008

Мы с коллегой обсуждаем лучшие практики, касающиеся параметров метода заказа. Цель состоит в том, чтобы установить стандарт в нашей организации, чтобы улучшить удобочитаемость и производительность путем предоставления нашим методам общих подписей. Мы просто устанавливаем руководящие принципы для недавних выпускников, которых мы нанимаем.

Пример (userId всегда передается для проверки вызовов):

GetOrders (строка userId, int customerId); GetOrders (строка userId, int [] orderIds); GetCustomer (строка userId, int customerId);

Мой аргумент следующий:

  1. общие аргументы оставлены больше всего.
  2. остальные аргументы основаны на важности
  3. необязательные (обнуляемые) аргументы последними.

Его аргумент по сути противоположен.

Я не прошу ни правильного или неправильного ответа здесь, ни обсуждения. Я просто хочу посмотреть, какие стандарты уже существуют.

Спасибо!

Ответы [ 5 ]

6 голосов
/ 16 октября 2008

Я бы пошел с упорядочением ввода, вывода, необязательно.

Необязательный должен идти в конце, потому что большинство языков позволяют вам указать значение по умолчанию для необязательных аргументов, чтобы избежать их включения. Условием этого является то, что они должны быть последним аргументом, иначе вы не можете их отбросить.

Это при условии, что вы не можете иметь именованные аргументы, хотя. Если вы можете их получить, я всегда советую использовать их для ясности, и порядок становится спорным.

4 голосов
/ 16 октября 2008

Я стараюсь, чтобы все методы, использующие похожие параметры, использовали их в одном и том же порядке.

Для выбора одного метода я выбираю по важности. Необязательные элементы в последний раз.

3 голосов
/ 16 октября 2008

Мне нравится расположить их в алфавитном порядке по имени. Облегчает поиск того, кого вы ищете.

Я согласен, что необязательные со значениями по умолчанию, кажется, принадлежат в конце. На некоторых языках это требуется.

Когда вы перегружаете методы, я начинаю с наиболее часто используемого аргумента и заканчиваю тем, которые делают эту версию метода уникальной.

public method foo (string name)
public method foo (string name, string city)
public method foo (string name, string city, string state)
1 голос
/ 16 октября 2008

Заказать вещи появляются в других контекстах.

Проще всего добавить аргументы в конец.

1 голос
/ 16 октября 2008

Одна идиома, популярная в программировании на C, заключается в том, что цель идет первой, поэтому в strcpy (A, B); копирует B в A (очень похоже на «A = B;» копирует B в A).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...