tôi đang tìm kiếm thông qua các bên trong của Pharo và nhận thấy rằng định nghĩa của số học + và - trông rất giống nhau:Tại sao định nghĩa Pharo về số học + và - về cơ bản là mã trùng lặp?
+ aNumber
"Refer to the comment in Number + "
aNumber isInteger ifTrue:
[self negative == aNumber negative
ifTrue: [^ (self digitAdd: aNumber) normalize]
ifFalse: [^ self digitSubtract: aNumber]].
aNumber isFraction ifTrue:
[^Fraction numerator: self * aNumber denominator + aNumber numerator denominator: aNumber denominator].
^ aNumber adaptToInteger: self andSend: #+
và
- aNumber
"Refer to the comment in Number - "
aNumber isInteger ifTrue:
[self negative == aNumber negative
ifTrue: [^ self digitSubtract: aNumber]
ifFalse: [^ (self digitAdd: aNumber) normalize]].
aNumber isFraction ifTrue:
[^Fraction numerator: self * aNumber denominator - aNumber numerator denominator: aNumber denominator].
^ aNumber adaptToInteger: self andSend: #-
Như tôi đã nhìn thấy nó, điều này là hoàn toàn so với OO cách thiết kế mọi thứ và nói chung là xấu. Tại sao không ai tìm được giải pháp tốt hơn?