Предположим, что у вас есть множество переменных на основе числа или int, которые вы хотите инициализировать, до некоторого значения по умолчанию. Но использование 0 может быть проблематичным, потому что 0 имеет смысл и может иметь побочные эффекты.Рекомендуемые значения инициализации для чисел
Есть ли какие-либо соглашения вокруг этого?
Я работаю в ActionScript в последнее время и имею множество объектов с дополнительными параметрами, поэтому для большинства переменных я устанавливаю нуль, но для чисел или ints я не могу использовать null. Пример:
package com.website.app.model.vo
{
public class MyValueObject
{
public function MyValueObject (
_id:String=null,
_amount:Number=0,
_isPurchased:Boolean=false
)
{ // Constructor
if(_id != null) this.id = _id;
if(_amount != 0) this.amount = _amount;
if(_isPurchased != false) this.isPurchased = _isPurchased;
}
public var id:String;
public var amount:Number;
public var isPurchased:Boolean;
}
}
Трудность состоит в том, что использование 0 в приведенном выше коде может быть проблематичным, если значение никогда не изменяется от своего первоначального значения. Легко определить, имеет ли переменная нулевое значение. Но обнаружение 0 может быть не так просто, потому что 0 может быть законным значением. Я хочу установить значение по умолчанию, чтобы параметр был необязательным, но я также хочу, чтобы потом обнаружил в моем коде, если значение было изменено со своего значения по умолчанию без особых проблем для отладки.
Я полагаю, что я мог бы использовать что-то вроде -1 для значения. Мне было интересно, существуют ли какие-либо хорошо известные правила кодирования для такого рода вещей? Я полагаю, это зависит от характера переменной и данных.
Это первый вопрос о переполнении стека. Надеюсь, смысл моего вопроса имеет смысл.
ActionScript не принимает значение null для int или числовых параметров. Но при чтении этого вопроса: http://stackoverflow.com/questions/1003100/why-cant-typed-optional-arguments-have-a-default-of-null похоже, что NaN является эквивалентным нулевым значением для номера. Поэтому я думаю, что это отвечает на мой вопрос. Но мне любопытно, какие конвенции существуют на других языках. –