전체 글
-
[SOLID] DIP에 대해 알아보자Refactoring 2024. 10. 8. 20:47
(기존 벨로그 링크) 드디어 SOLID에 마지막 법칙인 DIP !사실 DIP 없이는 OCP를 구현할 수 없다고 생각해서.. OCP를 완전히 이해하고 적용할 수 있는 사람이라면 DIP 개념이 어렵지 않을 것이라고 생각한다.그렇지만 처음 본다면 상당히 어려운 개념.. 쉬운 비유와 예시를 통해 마스터 해보도록 하자 ;-;DIPDependency Inversion Principle : 의존성 역전 법칙상위 모듈은 하위 모듈에 의존해서는 안된다. 상위 모듈과 하위 모듈 모두 추상화에 의존해야 한다.추상화는 세부 사항에 의존해서는 안된다. 세부사항이 추상화에 의존해야 한다.이게 도대체 무슨 소리인가 싶지만.. 비유를 통해 차근차근 알아보자.노트북 VS 데스크탑일단 시작에 앞서 상위 모듈은 컴퓨터, 하위 모듈은 키보..
-
[SOLID] LSP와 ISP에 대해 알아보자Refactoring 2024. 10. 8. 20:45
(기존 벨로그 링크)LSPLiskov substitution principle : 리스코프 치환 원칙리스코프 형님이 만드신 원칙으로, ‘프로그램의 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다.’ 라고 정의되어 있다.이게 말이 참 어려운데.. 다른 정의도 살펴보자.‘자식클래스는 부모 클래스로써의 역할을 완벽히 할 수 있어야 한다’일단 두 개의 정의를 살펴보니 상속에 관한 얘기인 것 같고.. 아주 쉽게 정리하면 리스코프 원칙 따라서 상속 야무지게 해라! 라는 뜻으로 봐도 될 것 같다^^나는 처음 봤을 때 상속을 잘 하라는건 알겠는데 의문이 드는 말이 하나 있었다.‘부모 클래스를 자식 클래스로 대체해도 문제 없어야 한다’이게 도대체 무슨말이지..?많은 예시를 보면서..
-
[SOLID] OCP에 대해 알아보자Refactoring 2024. 10. 8. 20:44
(기존 벨로그 링크) 저번에 포스팅했던 SRP에 이어서 OCP를 공부해보려고 한다.OCPOpen-Closed Principle : 개방-폐쇄 원칙“소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야 한다.”말이 참 어려운거 같은데 나는 이렇게 정리하고 싶다.확장에는 열려있다 : 새로운 코드를 추가하여 기능을 확장한다.변경에는 닫혀있다 : 기능을 확장할 때 원래 코드를 건들이지 않는다.쉽게 말하면 이미 짜놓은 코드 건들이지 말고 기능을 추가하거나 수정하라는 것 같다.근데 아무리 생각해도 기능을 추가하고 수정할 때 어떻게 원래 코드를 건들이지 말라는건가 싶다.그리고 원래 코드의 기준이 뭐지? 라는 생각도 들었다.그러면 코드를 보면서 이해해보자.아래 음식 주문을 받고 손님들에게 내어주어야 하는 중국집..
-
[SOLID] SRP에 대해 알아보자Refactoring 2024. 10. 8. 20:42
(기존 벨로그 링크) SOLID는 대학교에서 처음 접해 이론을 공부하고 정보처리기사를 딸 때 한 번 더 접했었다.이론을 공부하면서 ‘아, 이런 식으로 코드를 짜야 좋은 코드이구나’라고 생각만 했지 실제 코드에 적용해 본 적은 없었다. 원칙 따위 무시하고 기능 구현에만 급급했던..이번 야곰 리팩토링 아카데미에 참가하면서 SOLID의 중요성을 깊이 알게 되었고 코드에도 적용해보니 꼭 필요한 원칙임을 깨닫게 되었다. (특히 실무같이 큰 프로젝트에 있어서는 더더욱..)그래서 SOLID의 S인 SRP부터 차근차근 공부해 보려고 한다. SRPSingle Responsibility Principle, 단일 책임 원칙한 클래스는 하나의 책임만 가져야 한다!여기서는 클래스라고 나와 있지만 함수도 포함하여 생각하면 좋을 ..
-
[Swift/Clone] 마이루틴 앱 팝업뷰 구현하기Study/ios 2023. 8. 8. 20:28
전부터 팝업뷰를 구현해 보고 싶었는데 '마이루틴' 앱을 사용하던 중팝업뷰가 사용된 것을 보고 따라해보기로 했다. 팝업뷰는 프레임워크로도 구현할 수 있고 코드로 직접 커스텀하여 구현할 수 있는데이 분의 블로그를 보고 공부하여 마이루틴 앱 처럼 구현해 보았다.https://sunidev.tistory.com/10 [iOS/Swift] Custom Animation Popup 만들기📌 이번 글은 UIView.animate를 사용하여, Custom Animation Popup을 만드는 방법입니다. 해당 포스팅은 Storyboard intreface 기반 Swift 프로젝트입니다. Fade In Out Animation Popup Move Animation Popup 1. UIWindow+Ext.swift 준s..
-
[Swift/Clone] 야놀자 TabBar 따라해보기Study/ios 2023. 7. 24. 19:18
야놀자 어플의 탭바는 항상 흥미로웠기 때문에 꼭 한번 구현해보고 싶었었다.꺾여있는 탭바와 4개의 아이템으로 구성되어 있고가운데에는 애니메이션이 있는 버튼이 있다. 결과 화면 꺾인 탭바와 아이템들은 다른 글에서 다뤄봤기 때문에 설명을 생략하겠다. 먼저 버튼에 gif를 넣기 위해 Gifu라는 라이브러리를 사용하였다.라이브러리를 추가하고 아래와 같은 코드로 버튼을 생성한다.func makeButton() { let button = CustomButton(type: .custom) // 커스텀 버튼 button.frame = CGRect(x: 167, y: -10, width: 60, height: 60) // 위치와 크기 // gif를 설정해주고 버튼에 서브뷰로 추가 let gifI..
-
[Swift/Study] KakaoMap 여러가지 기능 구현해보기 2Study/ios 2023. 7. 21. 17:39
저번 글에서 카카오 맵의 다양한 기능을 구현해 보았다!https://eunduk2.tistory.com/40 [Swift/Study] KakaoMap 여러가지 기능 구현해보기 1저번 글에서 카카오 맵의 기본기를 적용했었다. https://eunduk2.tistory.com/39 [Swift/Study] Kakao Map API 적용해보기 평소에 카카오 맵을 Swift에 적용해보고 싶었는데 여러 문서를 참고하고 공부하여 실습해eunduk2.tistory.com 이어서 몇 개의 기능을 더 구현해보고 카카오 맵에 관한 내용은 마치려고 한다. 첫번째로 구현한 기능은주소를 입력받아 지도에 핀을 찍는 기능이다.import CoreLocation // CLGeocoder를 사용하기 위한 프레임워크func addPi..
-
[Swift/Study] KakaoMap 여러가지 기능 구현해보기 1Study/ios 2023. 7. 19. 21:59
저번 글에서 카카오 맵의 기본기를 적용했었다.https://eunduk2.tistory.com/39 [Swift/Study] Kakao Map API 적용해보기평소에 카카오 맵을 Swift에 적용해보고 싶었는데 여러 문서를 참고하고 공부하여 실습해 보았다. api를 가져오는 방법은 많은 분들이 너무 잘 설명해 주셔서 생략하고 내가 실습한 내용을 정리해eunduk2.tistory.com 추가로 여러가지 기능을 공부해보고 실습해 보았다! 첫번째로 나의 위치를 가져와서 마커를 찍고 그 위치로 이동하는 기능이다.위치 권한을 얻을 수 있게 info.plist에 필요한 키를 추가해주고아래 코드를 작성한다.// 내 위치로 트래킹func trackMyLocation() { // 사용자 위치에 마커 찍기 ma..