Swift는 객체형 패러다임을 지원하지만 함수형 패터다임도 지원합니다. 자주 사용하지만 잘모르고 사용할 수 있는 고차함수에 대해 간단히 정리하면서 머리에도 정리하고자 합니다. 'reduce'는 각 요소에 결합 작업을 차례로 적용하여 컬렉션의 요소를 단일 값으로 결합하는 데 사용할 수 있는 Swift의 고차 함수입니다. 즉, 배열요소를 특정 프로세스를 거쳐 단일요소로 바꾸는 함수입니다. 쉽게말하면 어떤 값들을 입력받아 단일 값으로 출력하는 함수라고 보면 됩니다. reduce의 기본 구문은 다음과 같습니다. public Struct Array { func reduce(_ initialResult: Result, _ nextPartialResult: (Result, Element) throws -> Resul..
좋은 코드란 무엇일까, 어떻게 하면 좋은 코드를 만들 수 있을까. 개발자로 일하고 난 후 계속 고민해 왔던 주제이고 앞으로도 고민할 주제이다. 시중에 좋은 코드를 만드는 방법에 대해 나온 많은 서적들이 있고, 많은 아티클이 있다. 그 자료들을 토대로 여태까지 일하며 배운, 얻은 인사이트를 간략히 정리하려 한다. 개인적인 생각으로, 좋은 코드란 비지니스를 뒷받침할 수 있는 코드라고 생각한다. 일단 제품이 있어야하며 제품을 사용하는 사용자가 있어야한다. 그것을 기술적으로 가능하게 하는 것이 개발자이며, 그것을 맞추는 것이 좋은 코드라고 생각한다. 어떤 멋진 코드를 만들더라도 제품을 사용하는 사용자가 없고, 그 결과 제품이 없어진다면 무용지물이 되지 않을까? 일을 하다보면 어떤 기능을 구현하는 가도 중요하지만..
주석은 꼭 필요한 곳에만 달아두는 것이 좋습니다. 비지니스 로직은 항상 변경되기 마련이며, 주석에 로직을 넣는 다면 주석도 관리대상에 포함됩니다. 따라서 프로그램 수정 시 관리해야할 대상이 더욱 넓어짐으로 꼭 필요한 사항이 아니라면 넣지 않는 것이 좋습니다. 1. API는 (///) 사용하여 요약으로 시작할 것 2. 함수/ 메소드가 어떤 작업을 수행하는지, 어떤 것을 반환하는 지 설명하고, nil과 Void 반환은 생략할 것. 여러줄로 적을 때에는 javaDoc 형식을 사용하지 말 것 (/** … */) /// 기기 Bluetooth Number로 블루투스 검색을 시작함. func startScanDevice(btNumber: String) /// 설명 /// /// - Parameters: 파라메터설명..
개발자들은 자신의 생각을 정리하여 소프트웨어를 개발합니다. 하지만 너무 다른 스타일로 인하여 협업에 문제가 발생하는 케이스를 많이 봐왔고 실제로 경험해왔습니다. 만약 공통된, 혹은 약속된 컨벤션이 있다면 커뮤니케이션의 불필요한 에너지 소모를 줄이며, SW 품질을 상향시킴으로 여러가지 좋은 효과를 가져올 수 있었습니다. 코딩컨벤션을 적용하여 얻은 효과는 아래와 같습니다. 일관된 코딩 스타일을 유지 코드의 가독성을 향상 유지 보수 시간의 단축 개발자간 협업 시 의견 충돌의 최소화 그간 iOS개발을 진행하며 기본적으로 적용해왔던 것을 간단하게 정리하겠습니다.
버그 리포팅이 들어왔는데, 회원 가입 시 패스워드 입력이 안된다는 것이며, 실제로 확인 결과 패스워드 입력 시 키보드 영역이 배경색(회색)으로만 나오지만, 일정 시간이 지나면 키보드가 표시된다. 그리고 로그인할때의 패스워드 키보드는 잘 표시가 되는데, 회원가입시 패스워드의 입력이 문제가 되는 점이다. 확인해보니 두 View의 코드상의 차이점은 없었으며, 이것을 어떻게 OS에서 감지하는지 잘 모르겠다. 아시는 분은 댓글로 알려주시면 감사하겠습니다. PROBLEM [AutoFill] Cannot show Automatic Strong Passwords for app bundleID: test.dev due to error: iCloud Keychain is disabled 키보드가 나타날때 콘솔창에 위와 같..
다국어 작업은 늘 힘들고 반복적인, 짜증나는 작업이다. 이 짜증나는 작업을 어떻게 하면 조금 더 편하게 할 수 있을까? 다국어 처리를 위해 이리저리 둘러보던 중, 구글 드라이브에 작성한 시트를 기반으로 리소스파일을 생성하는 스크립트를 발견하였다. github.com/aurelhubert/android-ios-drive-export 위 사이트의 내용을 기반으로 입맛에 맞게 좀 더 수정해주었다. - titleRow와 startDataRow는 시트에서 타겟으로 하는 제목 라인과 데이터의 시작 라인을 의미한다. - categoryCol의 값은 다국어 리소스 파일 생성 시 주석을 만들어준다. - typeCol의 값이 없으면 해당 라인은 다국어 리소스 파일 생성을 하지 않는다. - androidCol의 값은 안드로..
JSON 모델링 서비스 https://quicktype.io JSON을 해당 언어의 데이터모델로 변환해주는 매우 감사한 서비스를 제공한다. 지원되는 언어 역시 Swift, Java, Javascript등 현존하는 거의 모든 언어를 지원하며, 변환 타입도 언어별로 지원하고 있다. JSON Pretty 서비스 https://jsonformatter.curiousconcept.com/ JSON을 보기 좋게 바꿔주는 서비스를 제공한다.
어느새 개발자로 일하게 된지 10년이 넘었다. 그간 많은 사람들과 함께 일하며 아~ 이런 개발자는 되지 말아야겠다. 라고 정리할 겸사 포스팅한다. 1. 내로불남 내가 하면 로맨스, 남이 하면 불륜 이라는 말이 있다. 내가 하면 되고, 너가 하면 안돼. 이런 마인드. 좋지 않다. 보통 내가 하면 너도 되고, 너가 안되면 나도 안되는 경우가 많다. 내가 하면 왜 되고, 너가 하면 왜 안되는지 논리적으로 설명할 수 있어야 할 것이다. 2. 증거 가져와 개발자는 내 코드에도 버그가 있지 않은지 의심해 봐야한다고 생각한다. 하지만 문제가 발생하면 꼭 다른 사람에게 책임을 미루며 증거(에러로그 등...)을 가져와야 미적미적 움직이는 사람이 있다. 물론 자신이 만든 코드에 문제가 발생하지 않을 수도 있다. 하지만 자..
POP/ Functional Programming/ Reactive Swift 1. POP (Protocol Orientied Programming) 아마 개발자를 시작한 이래 매료되었던 패러다임은 OOP였다. 재사용 가능하고 손쉬운 유지 보수를 위한 OOP방식과 여러 디자인 패턴은 매력적이었고 최근까지도 이를 익히고 사용하기 위해 노력해왔다. 하지만 Objective-C에서 Swift로 언어를 전환하며, POP 방식이 OOP방식보다 객체지향프로그래밍에 더 적합하다고 느껴 다시 POP방식으로 개발하려고 하고 있다. 실천: - 상속을 사용하기 보다 해당 객체의 행동(역할) 파악하여 여러 프로토콜로 쪼개기 - 한 프로토콜에서는 하나의 책임/동작만 하도록 하기 - 객체를 직접 넣어주기보다 프로토콜 타입으로 넘..
- Total
- Today
- Yesterday
- 약한참조
- ios14
- ASIHttpRequest
- 강한참조
- suspend
- terminate
- 고차함수
- 좋은코드
- Automatic Reference Counting
- ios file download
- UITextField
- 이어받기
- GoogleDrive
- onetime
- iOS12
- 파일 다운로드
- 함수형
- Swift
- ios
- i18n
- remove chome desk top
- Android NullPointException
- 크롬 원격 삭제
- 기술부채
- 맥미니 2009 late RAM HDD Upgrade
- password autofill
- FIND
- Codable
- reduce
- 순환참조
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |