Много уровней вложенности плохо читаются. Попробуйте добавить внутрь условия
if (rulesField.isChecked()) {
register(numberField.getText().toString(), codeField.getText().toString());
}
Ещё парочку вложенных if-else, чтобы получилось вот такое:
@Override
public void onButtonClick() {
if (isRequested()) {
if (rulesField.isChecked()) {
if (canProceed()) {
register(numberField.getText().toString(), codeField.getText().toString());
} else if (isExtraRequestRequired()) {
doSomething();
} else if (oneMoreCondition()) {
doSmomethingOnExtraCondition();
} else {
Log.e("Unexpected condition");
}
} else {
showMessage(R.string.error_rules);
}
} else {
requestRegister(numberField.getText().toString());
}
}
и вы поймёте, что удерживать в голове ту ветку, которая вам интересна (сначала if, потом вложенный в него else, потом второй if-else из вложенных в else первого if'а) становится решительно невозможно. Поэтому и стараются так структурировать код, чтобы он был "плоским", то есть без вложенности. Это, конечно идеал, и иногда труднодостижимый, но стремиться к нему стоит - человек, который после вас будет читать ваш листинг (а чаще всего это будете вы сами недели через две после того, как вы его написали, и успешно забыли всю структуру), скажет вам спасибо.