насколько коротким должен быть function be?

Я немного искал здесь и не нашел ничего похожего, поэтому я собираюсь спросить. Это действительно больше о семантике, чем о реальном вопросе программирования. В настоящее время я пишу что-то на C ++, но язык на самом деле не имеет значения.

Я прекрасно понимаю, что хорошая практика программирования - делать свои функции / методы как можно короче. Но как узнать, слишком ли длинная функция? С другой стороны, возможно ли когда-либо слишком много ломать функции?

Первым языком программирования, который я изучил (кроме Applesoft BASIC, который не считается ...), был язык ассемблера 6502, где скорость и оптимизация - все. В случаях, когда несколько подсчетов циклов портят синхронизацию всей вашей программы, часто лучше установить место в памяти или зарегистрироваться напрямую, чем переходить к другой подпрограмме. Первая операция может занять 3 или 4 цикла, в то время как в целом вторая может занять в два или три раза больше.

Хотя я понимаю, что в настоящее время, если бы я хотя бы упомянул количество циклов некоторым программистам, они просто дали бы мне пустой взгляд, от этой привычки трудно избавиться.

В частности, допустим (снова используя C ++) у нас есть метод частного класса, который выглядит примерно так:

int Foo::do_stuff(int x) {
    this->x = x;
    // various other operations on x
    this->y = this->x;
}

Я видел некоторые аргументы, которые, по крайней мере, каждый набор операций должен быть отдельной функцией. Например, do_stuff () теоретически должен называться set_x (int x), отдельная функция должна быть написана для набора операций, выполняемых с членом класса x, а третья функция должна быть написана для присвоения окончательного значения члена класса x члену класса y. Но я видел и другие аргументы в пользу того, что КАЖДАЯ операция должна иметь свою собственную функцию.

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

Есть ли лучший метод для такого рода вещей или это больше зависит от индивидуального суждения?

6
задан xobicvap 14 January 2011 в 00:09
поделиться