Какой хороший поддерживаемый способ назвать методы, которые должны вызываться IBActions? - PullRequest
1 голос
/ 19 ноября 2010

Я создаю функцию (например) для проверки контента, затем, если он действителен, закройте представление, если нет, предоставьте дополнительные инструкции пользователю.(Или другие подобные действия.) Когда я иду назвать это, я задаюсь вопросом, стоит ли мне назвать это -doneButtonPressed или -validateViewRepairAndClose?Было бы лучше назвать метод после того, как его называет действие пользовательского интерфейса, или назвать его после того, что он делает?Иногда это кажется простым, такие вещи, как -save, довольно ясны, в других случаях, и я не могу сразу привести какой-то конкретный пример, но я знаю, что некоторые, похоже, называют их после того, что они делают, так долго и запутаннокажется, лучше просто назвать их xButtonPressed, где х - слово на кнопке.

Ответы [ 2 ]

3 голосов
/ 19 ноября 2010

Это огромная проблема !!!Я потерял сон из-за этого.

Чисто FWIW ... мой голос за "theSaveButton", theButtonAtTheTRRight "" userClickedTheLaunchButton "" doubleClickedOnTheRedBox "и т. Д.

Обычно мы называем все эти процедурысюда.Однако ... часто я просто заставляю их перейти прямо к другой процедуре "launchTheRocket", "saveAFile" и т. Д.

Это оказалось полезным?Это происходит потому, что часто вы хотите запустить ракету самостоятельно ... в этом случае вызовите процедуру launchTheRocket, а не пользователя, нажимающего кнопку, которая запускает ракету.Если вы хотите запустить ракету самостоятельно и вызываете userClickedTheLaunchButton, это не так и выглядит более запутанно в коде.(Вы пытаетесь специально имитировать нажатие на экран, или?) Отладка и т. Д. Намного проще, когда они разделены, так что вы знаете, кто что называл.

Это оказалось немного полезным, например, при сборестатистика.Пользователь запросил запуск ракеты 198 раз, и в целом мы запустили ракету 273 раза.

Более того - это может быть решающим аргументом - скажем, из другой части вашего кода вы запускаете ракету,используя сообщение запуска ракеты.Это делает более понятным, что вы на самом деле делаете это, а не что-то, что связано с кнопкой.И наоборот, концепция userClickedTheLaunchButton может меняться со временем, обычно она может запускать ракету, но иногда она может просто вызвать сообщение, или кто знает, что.

Действительно, нажатие кнопки может также вызвать вспомогательные вещи (возможно, анимациюили тому подобное), и это идеальное место для этого, внутри «clickedTheButton», а также вызова вызывающей функции «launchTheRocket».

Так что я на самом деле выступаю за третье, еще более нелепо сложное решение, состоящее в том, чтобыФункции userDidThis, а затем имеющие отдельные функции startANewGame.Даже если это обычно означает, что первое почти ничего не делает, просто вызывает второе!

Кстати, другой вариант именования будет объединять два ... "topButtonLaunchesRockets" "glowingCubeConnectsSocialWeb" и т. Д.

Наконец!Не забывайте, что обычно вы можете настроить их как действие, которое стилистически меняет все.

[theYellowButton addTarget:.. action:@selector(launchRockets) ..];
[theGreenButton addTarget:.. action:@selector(cleanUpSequence) ..];
[thatAnimatingButtonSallyBuiltForUs addTarget:.. action:@selector(resetAll) ..];
[redGlowingArea addTarget:.. action:@selector(tryGetRatingOnAppStore) ..];

возможно, это лучший способ, документально мудрый!Это один из лучших вопросов, когда-либо задаваемых на SO, спасибо!

0 голосов
/ 19 ноября 2010

Я бы также пошел с чем-то вроде xButtonPressed: или handleXTap: и затем вызвал другой метод из обработчика.

...