이 블로그 게시물 은 여러 업 보트와 함께 Hacker News에 게시되었습니다. C ++에서 나온 대부분의 예제는 내가 배운 것과 반대되는 것 같습니다.
예 # 2와 같은 :
나쁜:
def check_for_overheating(system_monitor)
if system_monitor.temperature > 100
system_monitor.sound_alarms
end
end
대 좋은 :
system_monitor.check_for_overheating
class SystemMonitor
def check_for_overheating
if temperature > 100
sound_alarms
end
end
end
C ++의 조언은 캡슐화가 증가함에 따라 멤버 함수 대신 자유 함수를 선호해야한다는 것입니다. 둘 다 의미 상 동일하므로 더 많은 주에 액세스 할 수있는 선택을 선호하는 이유는 무엇입니까?
예 4 :
나쁜:
def street_name(user)
if user.address
user.address.street_name
else
'No street name on file'
end
end
대 좋은 :
def street_name(user)
user.address.street_name
end
class User
def address
@address || NullAddress.new
end
end
class NullAddress
def street_name
'No street name on file'
end
end
User
관련이없는 오류 문자열을 포맷 해야하는 이유는 무엇 입니까? 'No street name on file'
거리가없는 경우 인쇄 이외의 작업을 수행하려면 어떻게 합니까? 거리의 이름이 같은 경우 어떻게해야합니까?
누군가가 "말하지 말고"장점과 이론적 근거를 알려줄 수 있습니까? 나는 어느 것이 더 나은지 찾지 않고 저자의 관점을 이해하려고 노력합니다.