Да, дорогая, функция может быть все меньше и меньше, и будет она хорошей или плохой, это зависит от используемого вами языка / платформы.
По моему мнению, я в основном работаю над интерфейсными технологиями, малые функции в основном используются в качестве вспомогательных функций, которые вы будете обязаны использовать их как много, работая с небольшими фильтрами и используя ту же логику в вашем приложении. Если ваше приложение имеет слишком много общей логики, тогда будет множество мелких функций.
Но в приложении, где у вас нет общей логики, вы не будете обязаны делать маленькие функции, но вы можете разбить свой код на сегменты, где вам будет легко управлять и понимать.
В общем, разбить ваш огромный код на маленькие функции - очень хороший подход. В современных рамках и языках вы будете обязаны делать это, например,
data => initScroll(data)
является анонимной функцией в JavaScript и Typescript ES 2017
getMarketSegments() {
this.marketService.getAllSegments(this.project.id)
.subscribe(data => this.segments = data, error => console.log(error.toString()));
}
В приведенном выше коде вы можете увидеть 3 объявления функций и 2 вызова функций. Это простой вызов службы в Angular 4 с Typescript. Вы можете думать об этом как о своих требованиях
([] 0)
([x] 1)
([x y] 2)
Выше приведены 3 анонимные функции на языке Clojure
(def hello (fn [] "Hello world"))
Вышеуказанное является функциональным объявлением в ближайшем будущем.
Так что да, функции могут быть как меньше, но хорошо это или плохо, если у вас есть такие функции, как:
incrementNumber(numb) { return ++numb; }
Что ж, это не очень хорошая практика, но что, если вы используете эту функцию в теге HTML, как мы это делаем в Angular Framework, если не было поддержки увеличения или уменьшения в шаблонах Angular HTML, тогда это было бы решением для меня.
Давайте возьмем другой пример
insertInArray(array, newKey) {
if (!array.includes(newKey)) {
array.push(newKey);
}
}
Приведенный выше пример является обязательным при воспроизведении массивов внутри Angular HTML Templates. Так что иногда вам придется создавать небольшие функции
Assert.AreEqual<int>(expected, actual, message, arg1, arg2, arg3, ...);
. Второй хорошо как есть. Я бы потенциально включил необязательный флаг bool, который будет указывать, следует ли генерировать исключение / etc. в случае, если обратный вызов не является функцией.