Ich halte es in diesem Fall für eine schlechte Idee, dieselben Mitgliedsnamen zu haben, da der Code dadurch fehleranfälliger wird.
Stellen Sie sich das Szenario vor: Sie haben ein paar kartesische Punkte: pntA und pntB. Dann entscheiden Sie sich aus irgendeinem Grund, dass sie besser in Polarkoordinaten dargestellt werden sollen, und ändern die Deklaration und den Konstruktor.
Wenn alle Ihre Operationen nur Methodenaufrufe wären wie:
double distance = pntA.distanceFrom(pntB);
dann geht es dir gut Aber was ist, wenn Sie die Mitglieder explizit verwendet haben? Vergleichen Sie
double leftMargin = abs(pntA.x - pntB.x);
double leftMargin = abs(pntA.first - pntB.first);
Im ersten Fall wird der Code nicht kompiliert. Sie sehen den Fehler sofort und können ihn beheben. Wenn Sie jedoch dieselben Mitgliedsnamen haben, liegt der Fehler nur auf der logischen Ebene und ist viel schwerer zu erkennen.
Wenn Sie in einer nicht objektorientierten Sprache schreiben, ist es noch einfacher, eine falsche Struktur an die Funktion zu übergeben. Was hindert Sie daran, den folgenden Code zu schreiben?
double distance = calculate_distance_polar(cartesianPointA, polarPointB);
Verschiedene Datentypen ermöglichen es Ihnen andererseits, den Fehler während der Kompilierung zu finden.