이 질문에 답을 얻었지만 기본 검색을 통해 찾을 수 없습니다.문자열 형식으로 작업 수행
문자열 초기화 작업을 수행하는 것이 바람직하지 않습니까? 코드를 읽을 때 당신이 일-그 변화-것을 찾는 곳이 아니기 때문에
> increment = 4
=> 4
> "Incremented from #{increment} to #{increment += 1}"
=> "Incremented from 4 to 5"
이 질문에 답을 얻었지만 기본 검색을 통해 찾을 수 없습니다.문자열 형식으로 작업 수행
문자열 초기화 작업을 수행하는 것이 바람직하지 않습니까? 코드를 읽을 때 당신이 일-그 변화-것을 찾는 곳이 아니기 때문에
> increment = 4
=> 4
> "Incremented from #{increment} to #{increment += 1}"
=> "Incremented from 4 to 5"
나는 확실히는 않을 것.
의도를 모호하게 만들면 의미가 흐려집니다.
비교 :
url = "#{BASE_URL}/#{++request_sequence}"
로 :
request_sequence += 1
url = "#{BASE_URL}/#{request_sequence}"
는 일련 번호가 더 분명하다, 어디에서 오는 볼을 찾고 있다면?
내가 할 수있는 거의 첫 번째 버전과 함께 살고 있지만, 나는 후자를 선택할 가능성이 높습니다. 내가 대신이 작업을 수행 할 수 있습니다
url = build_url(++request_sequence)
을 특정 경우, 괜찮을 수 있지만 문제는 변수의 조작이 발생해야 위치가 동일한 변수의 마지막 인스턴스가 있어야한다는 것입니다 문자열, 그리고 당신은 항상 그것에 대해 확신 할 수 없습니다. 예를 들어, (일부 문체 이유) 가정, 당신은 그런
"Incremented to #{...} from #{...}"
, 갑자기, 당신은 당신이 한 일을 할 수 없습니다 쓰고 싶어요. 따라서 보간 중 연산을 수행하는 것은 문자열의 특정 구문에 크게 의존하므로 코드의 유지 관리 가능성이 줄어 듭니다.
+1, 좋은 지적; 다양한 상황에서 리팩토링/재정렬을 더 어렵게 만듭니다. –
오케이. 고맙습니다. 그러나 네트워크 요청을 할 때마다 정수를 증가시켜야하므로 항상 한 줄의 여분의 줄이있는 대신 URL 경로 생성에 증가분을 던질 것이라고 생각했습니다. 나는 아직도 가난한 형태라고 생각하고있다. – RileyE
@RileyE 의존; 그건 당신이 제공하는 것과는 아주 다른 예입니다. 나는 쉽게 이해할 수없는 방식으로 문자열 보간의 의미를 과부하하기 때문에 여전히 그렇지 않을 것이다. –
매우 다르지만 대부분의 경우 내 질문에 확실하게 답변 해 주셨습니다. 문자열 초기화에서 연산을 분리하고 모든 난독 화를 피하는 습관을 만들 것이라고 생각합니다. 고맙습니다. – RileyE