История изменений
Исправление wandrien, (текущая версия) :
переопределять операторы бум/не бум?
Под переопределять операторы имеется в виду перегружать операции?
Сложный вопрос. Сам над ним голову ломаю.
В этом отношении есть мысль следовать принципу единой точки ответственности. По умолчанию должна быть только одна точка, где задана семантика <имени>.
Если программист хочет использовать перегруженные варианты имени, происходящие из разных источников, он должен в явном виде это декларировать в том модуле, где это использует.
Например. Пусть у нас есть X foo(X x)
в модуле MOD1, и есть Y foo(Y y)
в модуле MOD2. Таким образом это две разных точки (два разных модуля), которые делят ответственность за имя foo
.
Если программист хочет импортировать в свой модуль обе функции, чтобы они были доступны без префиксов модуля, он должен явным образом декларировать, что именно это ему и требуется.
Так как перегрузка операций это синтаксический сахар над перегрузкой функций, то и для них будет действовать тот же принцип.
Исходная версия wandrien, :
переопределять операторы бум/не бум?
Под переопределять операторы имеется в виду перегружать операции?
Сложный вопрос. Сам над ним голову ломаю.
В этом отношении есть мысль следовать принципу единой точки ответственности. По умолчанию должна быть только одна точка, где задана семантика <имени>.
Если программист хочет использовать перегруженные варианты имени, происходящие из разных источников, он должен в явном виде это декларировать в том модели, где это использует.
Например. Пусть у нас есть X foo(X x)
в модуле MOD1, и есть Y foo(Y y)
в модуле MOD2. Таким образом это две разных точки (два разных модуля), которые делят ответственность за имя foo
.
Если программист хочет импортировать в свой модуль обе функции, чтобы они были доступны без префиксов модуля, он должен явным образом декларировать, что именно это ему и требуется.
Так как перегрузка операций это синтаксический сахар над перегрузкой функций, то и для них будет действовать тот же принцип.