Это хороший стиль? - PullRequest
       13

Это хороший стиль?

1 голос
/ 25 октября 2011

У меня есть некоторые параметры в моих функциях, которые получают и передают одно и то же значение.Должны ли я называть все переменные параметров одинаковыми?

Пример:

// assume numMonth = 12
// assume numYear = 2000

int promptMonth(); // returns numMonth
int promptYear();  // returns numYear

int daysInMonth(int numMonth, int numYear); // numMonth and numYear will always
int daysInYear(int numYear);                // be sent to these.

bool isLeapYear(int numYear);               // daysInYear() and daysInMonth() call
                                            // this function and send it numYear 
                                            // (which would be 2000 in this case).

Должны ли все эти параметры называться одинаково, поскольку каждому из них передается одинаковое значение?

Ответы [ 2 ]

6 голосов
/ 25 октября 2011

Таким же образом, я предполагаю, что вы имеете в виду имя параметра функции numYear.

Да, всегда полезно называть переменные осмысленным образом, который указывает значение / цель передаваемого значения.

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

4 голосов
/ 25 октября 2011

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

Позвольте мне объяснить,

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

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

Month promptMonth();
Year promptYear();

int daysInMonth( Month m, Year y); 
int daysInYear( Year y );

bool isLeapYear( Year );

Видите ли вы, что теперь вам не только не нужно использовать сложные имена переменных, но вы также можете выполнять специальные распечатки и проверки?

cout << "the current month is " << promptMonth();  

может выдать

the current month is 'October'
...