У меня есть общий вопрос об объеме и инкапсуляции. Возьмите два сценария:
Сценарий 1:
// a global application level constant
public static const IS_DEMO_MODE:Boolean = false;
... // somewhere deep in the codebase
private function _myFunction():void
{
if (IS_DEMO_MODE == true) {
// If Demo Mode do not allow this function to complete
return;
}
else {
// Function behaves normally
// Code ...
}
}
Сценарий 2:
// a global application level constant
public static const IS_DEMO_MODE:Boolean = false;
... // somewhere deep in the codebase
// call the function and pass in the constant
_myFunction(IS_DEMO_MODE);
private function _myFunction(isDemoMode:Boolean):void
{
if (isDemoMode == true) {
// If Demo Mode do not allow this function to complete
return;
}
else {
// Function behaves normally
// Code ...
}
}
Функционально говоря, эти два фрагмента кода делают одно и то же. Я пытаюсь понять тонкости стиля кодирования и почему один способ может быть предпочтительнее другого? Кажется, что сценарий 2 лучше с точки зрения инкапсуляции. Но сценарий 1 является более надежным в том смысле, что логическое значение в условном выражении происходит только из одного места - глобальной константы. Вам не нужно беспокоиться о вызове функции, который при правильном получении параметра может передать неправильное значение. Но сценарий 2 кажется стоящим, потому что вы удаляете зависимость от константы и можете заставить функцию вести себя более динамично. Есть мысли по этому поводу? Есть ли какие-то другие компромиссы, которые я просматриваю?
То же понятие и вопрос применяются и к объектам и классам. Но я просто представляю пример в виде функции для простоты примера кода.