Я нахожу, что у меня есть подобные переговоры много. С одной стороны, у Вас есть компактный, эффективный метод достижения Вашей цели. С другой стороны, у Вас есть что-то, что остальная часть Вашей команды не могла бы понять, будучи сложно поддерживать в будущем.
Мое общее правило состоит в том, чтобы спросить, является ли используемая техника чем-то, что разумно ожидать, что программисты в целом будут знать. В этом случае я думаю, что разумно ожидать, что программисты будут знать, как использовать булевы операторы, таким образом с помощью xor в, если оператор хорошо.
, Поскольку пример чего-то, что не было бы хорошо, возьмите прием использования xor для свопинга двух переменных, не используя временную переменную. Это - прием, с которым я не ожидал бы, что все будут знакомы, таким образом, он не передаст обзор кода.
Основное различие - 15 совершенно ненужных символов: -)
Когда ваш родительский класс реализует какой-либо интерфейс, все методы интерфейса либо реализуются им, либо определяются (явно или неявно) как абстрактные . В любом случае ваш класс, расширяющий родительский класс, наследует все эти методы и неявно реализует исходный интерфейс.
Нет никакой разницы. Дополнительные орудия
безвредны, но бесполезны.
Можно было бы возразить, что второе выражение «расширяет X реализует Y» многословно, но несколько лишних символов - хорошее напоминание. Взгляните на ArrayList и т. Д. Я почти уверен, что они используют длинную форму - extends AbstrsvtList реализует List.
В конце концов, большинство разработчиков быстро набирают текст, поэтому несколько лишних символов практически не требуют времени на ввод. Почему так много целей сводится к тому, чтобы печатать меньше, когда речь должна идти о ясности и устранении двусмысленности, а не о констатации всех фактов ...
Нет причин для реализации foo. Поскольку bar - это foo, barbar тоже будет.
Что ж, я согласен со всеми комментариями, которые были высказаны по этой проблеме, что это действительно ненужная реализация, хотя я мог бы сделать это в случае, если я хочу переопределить поведение barbar в отношении реализации foo, чтобы я мог сделать это, чтобы принудительно переопределить эти методы и заставить IDE автоматически реализовать это для меня !!
Но это то же самое, что переопределить эти функции в barbar