2015-08-22 3 views
1

Это вопрос, о котором я думал годами, примите во внимание следующий пример для всех других случаев, когда это применимо:не зависит от языка: вместо параметров статуса использовать «переменные состояния»?

Предположим, у вас есть кнопка, и в зависимости от ее видимости вы хотите изменить ее на другую состояние, visible-> невидим, invisible-> видимый

кто-то, кто не читал документацию класса, который он использует, вероятно, пойти на

Button button; 
bool visible; 

public onTouch(){ 

if(visible){ 
    button.setVisibility(invisible) 
    visible=false;} 
else{ 
    button.setVisibility(visible) 
    visible=true;} 
} 

который будет работать большой. Однако, в большинстве языков, классы UI предлагают что-то вроде Button.getVisibility, которое привело бы к следующему коду:

Button button; 

public onTouch(){ 

if(button.getVisibility==visible){ 
    button.setVisibility(invisible)} 
else{ 
    button.setVisibility(visible)} 
} 

Что нужно меньше строк, и если видимость была булево onTouch() даже может быть один вкладыш. С другой стороны, вы вызываете вызов метода, метод требует времени, чтобы вернуть значение, и это в больших масштабах приведет к небольшой задержке и, следовательно, сделает GUI незначительным немного невосприимчивым.

Как вы справляетесь с этим? Это то, о чем нужно заботиться, или время, которое я вкладываю в этот вопрос, уже превысило все маленькие циклы процессоров, которые когда-либо испытывали пользователи, «ожидая» кнопки для возврата небольшого параметра?

ответ

1

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

Существует также стоимость поддержания отдельной visible переменной, а также, как с точки зрения производительности, но что более важно в сложности убедившись, что она хранится в синхронизации с button

Возможно Button должен иметь toggleVisibility() способ.

Смежные вопросы