Пример:
// access fields directly
private void doThis()
{
return doSomeWork(this.data);
}
// receive data as an argument
private void doThis(data)
{
return doSomeWork(data);
}
Первая опция связана со значением в this.data, а вторая опция избегает этой связи. Я чувствую, что второй вариант всегда лучше. Это способствует слабой связи В пределах класса. Получение доступа к глобальным данным класса в любом случае кажется плохой идеей. Очевидно, что данные этого класса должны быть доступны напрямую в какой-то момент. Однако, если доступ к данным глобального класса может быть исключен путем передачи параметров, кажется, что это всегда предпочтительнее.
Второй пример имеет преимущество работы с любыми данными надлежащего типа, тогда как первый связан с работой только с данными класса. Даже если вам не нужна дополнительная гибкость, неплохо бы оставить ее в качестве опции.
Я просто не вижу никаких преимуществ в доступе к данным членов напрямую из частных методов, как в первом примере. Какова лучшая практика здесь? Я сослался на код завершения, но не смог найти ничего по этому конкретному вопросу.