Last active
March 5, 2018 13:15
-
-
Save myssun0325/ec324e728fc43a21502f0024af72bd58 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// | |
// main.swift | |
// UnitConverter | |
// | |
// Created by moon on 2018. 3. 5.. | |
// Copyright © 2018년 moon. All rights reserved. | |
// | |
import Foundation | |
typealias Result = (length: Double, unit: String) | |
// Get user length and unit. | |
func getLength() -> String { | |
var inputLength: String | |
print("Enter a value(ex: 120cm, 1.86m): ", terminator: "") | |
inputLength = readLine()! | |
return inputLength | |
} | |
// Return (converted value, converted unit). | |
func convertUnit(_ length: String) -> (Double, String) { | |
var value = length | |
var resultLength: Double = 0.0 | |
var resultUnit: String = "" | |
if value.hasSuffix("cm") { | |
value.removeLast(2) | |
resultLength = Double(value)! * 0.01 | |
resultUnit = "m" | |
} else { | |
value.removeLast() | |
resultLength = Double(value)! * 100 | |
resultUnit = "cm" | |
} | |
return (resultLength, resultUnit) | |
} | |
// Print the result | |
func printResult(_ lengthUnit: Result) { | |
if lengthUnit.unit == "cm" { | |
print(Int(lengthUnit.length), terminator: lengthUnit.unit + "\n") | |
} else { | |
print(lengthUnit.length, terminator: lengthUnit.unit + "\n") | |
} | |
} | |
let inputLength = getLength() | |
let convertedLength: Result = convertUnit(inputLength) | |
printResult(convertedLength) |
unitValue 나 resultValue 보다 더 구체적인 표현은 없을까요?
물론 단위 변환기라서 unit이 여기저기 반복될 가능성이 높지만, 의식적으로 반복되는 단어들을 줄여보세요.
- 예를 들어 Result 튜플이라면 내부에서는 result를 생략하는 게 좋겠습니다.
코드를 개선하고 다음 단계를 진행해보세요 ^^
Revisions 5
아무래도 길이! 변환이기 때문에 Length를 사용하는게 더 명확한거 같아서 개선해보았습니다.
말씀해주신대로 튜플의 내부에서는 그 튜플의 어떤 값을 지칭하는지로 바꾸어 보았습니다. (length, unit)
- 사용자 입력(단위 포함) : userLength
- 튜플 : Result = (length, unit)
위에 개선 내용이 좋네요.
printResult(_ result: Result)
는 result 단어가 3번이나 나옵니다. 개선해보고 싶지 않은가요?- userLength 변수나 getUserLength()에서 User는 어떤 의도일까요? 모든 프로그램은 사용자의 입력을 받는게 당연하기도 합니다. 한 번만 더 고민해보세요 :)
- 이제 다음 단계를 진행해보세요. 또 다른 상황이 생길 것 같아요.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
타입을 명시하지 않고 숫자값을 넣으면 Double 타입으로 지정됩니다.
convertUnit() 함수는 두 가지 역할을 하고 있는것 같습니다.