stavo guardando attraverso la struttura interna di Pharo e ho notato che la definizione di aritmetica + e - aspetto molto simili:Perché la definizione Pharo di aritmetica + e - codice sostanzialmente duplicato?
+ 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: #+
e
- 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: #-
come la vedo io, questo è completamente contro il OO modo di progettare le cose ed è generalmente cattivo. Perché nessuno trova una soluzione migliore?