Прежде всего: Мне известен тег языковой агностики!"runako" ответил на вопрос довольно правильно. Но часто вы хотите применить свои знания в реальном мире, поэтому я думаю, что было бы неплохо также дать ответ, который решает эту проблему более прагматично.
При работе с реальными языками мира, такими как c ++, c # или java, даже функция nop имеет реальные побочные эффекты, которые могут привести к выполнению кода!
Просто подумайте о статических конструкторах. Несмотря на то, что спецификации не всегда указывают время, когда статический конструктор запускается для класса, большую часть времени это будет момент времени, когда метод или член класса будет впервые доступен.
Пример на C #:
class NotSoObvious
{
static NotSoObvious()
{
CauseSomeSideEffects();
}
// calling this can cause the constructor to run first!
public static void DoNothing()
{
return;
}
}
Более того, даже тот метод, который вообще не вызывается, может вызывать побочные эффекты!
Подумайте об отражении (способность программы запрашивать информацию о своей структуре).
Когда метод присутствует, но не вызывается, его все равно можно обнаружить по отражению.
Метод без обращений к нему, безусловно, имеет побочный эффект для программы, которая выводит количество методов внутри!
Все сводится к следующему: если вы хотите узнать о реальных побочных эффектах метода, вам сначала нужно определить, что вы даже считаете «побочным эффектом».