2013-07-22 3 views
0

이 질문에 답을 얻었지만 기본 검색을 통해 찾을 수 없습니다.문자열 형식으로 작업 수행

문자열 초기화 작업을 수행하는 것이 바람직하지 않습니까? 코드를 읽을 때 당신이 일-그 변화-것을 찾는 곳이 아니기 때문에

> increment = 4 
=> 4 
    > "Incremented from #{increment} to #{increment += 1}" 
=> "Incremented from 4 to 5" 

답변

3

나는 확실히는 않을 것.

의도를 모호하게 만들면 의미가 흐려집니다.


비교 :

url = "#{BASE_URL}/#{++request_sequence}" 

로 :

request_sequence += 1 
url = "#{BASE_URL}/#{request_sequence}" 

는 일련 번호가 더 분명하다, 어디에서 오는 볼을 찾고 있다면?

내가 할 수있는 거의 첫 번째 버전과 함께 살고 있지만, 나는 후자를 선택할 가능성이 높습니다. 내가 대신이 작업을 수행 할 수 있습니다

url = build_url(++request_sequence) 
+0

오케이. 고맙습니다. 그러나 네트워크 요청을 할 때마다 정수를 증가시켜야하므로 항상 한 줄의 여분의 줄이있는 대신 URL 경로 생성에 증가분을 던질 것이라고 생각했습니다. 나는 아직도 가난한 형태라고 생각하고있다. – RileyE

+0

@RileyE 의존; 그건 당신이 제공하는 것과는 아주 다른 예입니다. 나는 쉽게 이해할 수없는 방식으로 문자열 보간의 의미를 과부하하기 때문에 여전히 그렇지 않을 것이다. –

+0

매우 다르지만 대부분의 경우 내 질문에 확실하게 답변 해 주셨습니다. 문자열 초기화에서 연산을 분리하고 모든 난독 화를 피하는 습관을 만들 것이라고 생각합니다. 고맙습니다. – RileyE

2

을 특정 경우, 괜찮을 수 있지만 문제는 변수의 조작이 발생해야 위치가 동일한 변수의 마지막 인스턴스가 있어야한다는 것입니다 문자열, 그리고 당신은 항상 그것에 대해 확신 할 수 없습니다. 예를 들어, (일부 문체 이유) 가정, 당신은 그런

"Incremented to #{...} from #{...}" 

, 갑자기, 당신은 당신이 한 일을 할 수 없습니다 쓰고 싶어요. 따라서 보간 중 연산을 수행하는 것은 문자열의 특정 구문에 크게 의존하므로 코드의 유지 관리 가능성이 줄어 듭니다.

+1

+1, 좋은 지적; 다양한 상황에서 리팩토링/재정렬을 더 어렵게 만듭니다. –