Іноді я стикаюся з методами, коли розробник вирішив повернути щось, що не є критично важливим для функції. Я маю на увазі, дивлячись на код, він, мабуть, працює так само добре, як void
і після хвилини роздуму, я запитую "Чому?" Це звучить знайомо?
Іноді я б погодився, що найчастіше краще повернути щось на кшталт bool
або int
, а точніше просто зробити void
. Я не впевнений, хоча у великій картині про плюси і мінуси.
Залежно від ситуації, повернення значка int
може дати абоненту знати кількість рядків або об'єктів, на які впливає метод (наприклад, 5 записів, збережених у MSSQL). Якщо такий метод, як "InsertSomething", повертає булевий, я можу мати метод, призначений для повернення у true
випадку успіху false
. Абонент може вибирати чи не діяти на цій інформації.
З іншої сторони,
- Чи може це призвести до менш чіткої мети виклику методу? Погане кодування часто змушує мене двічі перевірити вміст методу. Якщо він щось повертає, він говорить вам, що метод такого типу, що вам потрібно щось робити з повернутим результатом.
- Інша проблема, якщо впровадження методу вам невідоме, що розробник вирішив повернути, що не є критично важливим? Звичайно, ви можете прокоментувати це.
- Повертане значення повинно бути оброблене, коли обробка могла закінчитися в кінцевій дузі методу.
- Що відбувається під кришкою? Чи отримав викликаний метод
false
через помилку, яку викинули? Або він повернув помилку через оцінений результат?
Який у вас досвід з цим? Як би ви діяли з цього приводу?
void
принаймні, дозволяє розробникові знати, що повернене значення методу є несуттєвим; вона робить дію, а не обчислює значення.