Это было бы полезно
button.titleLabel.font = [UIFont fontWithName:@"YOUR FONTNAME" size:12.0f]
Второй способ является предпочтительным, особенно если вы можете сохранить предложения в одной строке:
maybeCngStor(Sz, ets) when Sz > 10000 -> something;
maybeCngStor(Sz, dets) when Sz < 10000 -> somethingelse;
maybeCngStor(_,_) -> ignoreit.
Облегчает чтение и рассуждение. Всегда выбирайте тот стиль, который будет легче всего читать в будущем. Часто вы обнаруживаете набор предложений, где одно - это 10 строк, а остальные - только одна строка - разбейте длинный на функцию:
maybeCngStor(Sz, ets) when Sz > 10000 -> something;
maybeCngStor(Sz, dets) when Sz < 10000 -> somethingelse();
maybeCngStor(_,_) -> ignoreit.
somethingelse() ->
(...)
Return.
Мелочи, такие как расположение предложений для их выравнивания и использование коротких имен переменных, имеют значение - но не попадайтесь в ловушку изменения всего на P, Q, R.
Хороший трюк, если вы много используете записи, - сопоставить записи с короткими переменными:
#record{foo = F, bar = B, baz = Bz} = Parameter
Это дает вам короткие имена переменных, имеет смысл, когда вы прыгаете с парашютом в функцию с высоты 10 000 футов в поисках жучка на следующее Рождество. F, очевидно, является Foo и т. Д. И т. Д.
maybeCngStor(Sz, ets) when Sz > 10000 -> something;
maybeCngStor(Sz, dets) when Sz < 10000 -> somethingelse;
maybeCngStor(_,_) -> ignoreit.
Облегчает чтение и рассуждение. Всегда выбирайте тот стиль, который будет легче всего читать в будущем. Часто вы обнаруживаете набор предложений, где одно - это 10 строк, а остальные - только одна строка - разбейте длинный на функцию:
maybeCngStor(Sz, ets) when Sz > 10000 -> something;
maybeCngStor(Sz, dets) when Sz < 10000 -> somethingelse();
maybeCngStor(_,_) -> ignoreit.
somethingelse() ->
(...)
Return.
Мелочи, такие как расположение предложений для их выравнивания и использование коротких имен переменных, имеют значение - но не попадайтесь в ловушку изменения всего на P, Q, R.
Хороший трюк, если вы много используете записи, - сопоставить записи с короткими переменными:
#record{foo = F, bar = B, baz = Bz} = Parameter
Это дает вам короткие имена переменных, которые имеет смысл, когда вы прыгаете с парашютом в функцию с высоты 10 000 футов в поисках жучка на следующее Рождество. F, очевидно, является Foo и т. Д. И т. Д.
maybeCngStor(Sz, ets) when Sz > 10000 -> something;
maybeCngStor(Sz, dets) when Sz < 10000 -> somethingelse;
maybeCngStor(_,_) -> ignoreit.
Облегчает чтение и рассуждение. Всегда выбирайте тот стиль, который будет легче всего читать в будущем. Часто вы обнаруживаете набор предложений, где одно - это 10 строк, а остальные - только одна строка - разбейте длинный на функцию:
maybeCngStor(Sz, ets) when Sz > 10000 -> something;
maybeCngStor(Sz, dets) when Sz < 10000 -> somethingelse();
maybeCngStor(_,_) -> ignoreit.
somethingelse() ->
(...)
Return.
Мелочи, такие как расположение предложений для их выравнивания и использование коротких имен переменных, имеют значение - но не попадайтесь в ловушку изменения всего на P, Q, R.
Хороший трюк, если вы много используете записи, - сопоставить записи с короткими переменными:
#record{foo = F, bar = B, baz = Bz} = Parameter
Это дает вам короткие имена переменных, которые имеет смысл, когда вы прыгаете с парашютом в функцию с высоты 10 000 футов в поисках жучка на следующее Рождество. F, очевидно, является Foo и т. Д. И т. Д.
Часто вы обнаруживаете набор предложений, где одно - это 10 строк, а остальные - только одна строка - разбейте длинный на функцию:maybeCngStor(Sz, ets) when Sz > 10000 -> something;
maybeCngStor(Sz, dets) when Sz < 10000 -> somethingelse();
maybeCngStor(_,_) -> ignoreit.
somethingelse() ->
(...)
Return.
Мелочи, такие как расположение предложений для их выравнивания и использование коротких имен переменных, имеют значение - но не попадайтесь в ловушку изменения всего на P, Q, R.
Хороший трюк, если вы много используете записи, - сопоставить записи с короткими переменными:
#record{foo = F, bar = B, baz = Bz} = Parameter
Это дает вам короткие имена переменных, которые имеет смысл, когда вы прыгаете с парашютом в функцию с высоты 10 000 футов в поисках жучка на следующее Рождество. F, очевидно, является Foo и т. Д. И т. Д.
Часто вы обнаруживаете набор предложений, где одно - это 10 строк, а остальные - только одна строка - разбейте длинный на функцию:maybeCngStor(Sz, ets) when Sz > 10000 -> something;
maybeCngStor(Sz, dets) when Sz < 10000 -> somethingelse();
maybeCngStor(_,_) -> ignoreit.
somethingelse() ->
(...)
Return.
Мелочи, такие как расположение предложений для их выравнивания и использование коротких имен переменных, имеют значение - но не попадайтесь в ловушку изменения всего на P, Q, R.
Хороший трюк, если вы много используете записи, - сопоставить записи с короткими переменными:
#record{foo = F, bar = B, baz = Bz} = Parameter
Это дает вам короткие имена переменных, которые имеет смысл, когда вы прыгаете с парашютом в функцию с высоты 10 000 футов в поисках жучка на следующее Рождество. F, очевидно, является Foo и т. Д. И т. Д.
Хороший трюк, если вы часто используете записи, - сопоставить записи с короткими переменными:
#record{foo = F, bar = B, baz = Bz} = Parameter
Это дает вам короткие имена переменных, которые имеют смысл, когда вы парашютируете в функцию с высоты 10 000 футов в поисках ошибки на следующее Рождество. F, очевидно, является Foo и т. Д. И т. Д.
Хороший трюк, если вы часто используете записи, - сопоставить записи с короткими переменными:
#record{foo = F, bar = B, baz = Bz} = Parameter
Это дает вам короткие имена переменных, которые имеют смысл, когда вы парашютируете в функцию с высоты 10 000 футов в поисках ошибки на следующее Рождество. F, очевидно, является Foo и т. Д. И т. Д.
You can make these examples more similar by doing:
case Type of
ets when Size > 10000 -> ...;
dets when Size < 10000 -> ...;
_ -> ...
end.
This seems to be clearer to me. The advantage of splitting this to a separate function is that you get to give it a name which acts as documentation and appears in stack traces. If that snippet is part of a larger function I'd separate it out, otherwise it's okay as is.
One thing worth considering is that error case as written the function will accept Type arguments other than ets/dets. Unless this is really what you want it's worth making this clause more restrictive.
As for me first style is more clear and may be faster. But it need test to say it exactly. In second case if type!=ets then both "Size > 10000" and "Size < 10000" would be evaluated.
(Поместите как ответ, чтобы получить форматирование кода ...!)
Одна вещь, которую я обнаружил, когда вносил некоторые изменения, это что этот подход может изменить короткое замыкание по умолчанию. Например,
case A > 10 of
true ->
case B > 10 of
true -> dummy1;
false -> dummy2
end;
false -> dummy3
end
должен всегда выполнять B> 10, если вы назовете его как
doTest(A > 10, B > 10)
when
doTest(true, true) -> dummy1;
doTest(true, false) -> dummy2;
doTest(false, _) -> dummy3.
, что иногда не то, что вам нужно!