• Home
  • About
    • 밤에 쓴 코드 photo

      밤에 쓴 코드

      부엉이의 개발 노트

    • Learn More
    • Facebook
    • Instagram
    • Github
  • Posts
    • All Posts
    • All Tags
  • Projects

부엉이의 노트

  • Boost Coure Ace Sign Up

    Sign Up 을 마치며

    Read More
  • Clean Code 7

    클래스

    Read More
  • Design Pattern 6

    팩토리 패턴

    Read More
  • Clean Code 6

    단위테스트

    Read More
  • Design Pattern 5

    커맨드패턴

    Read More
  • Design Pattern 4

    싱글턴 패턴

    Read More
  • Clean Code 5

    객체와 자료구조

    Read More
  • Swift 8

    Generic

    Read More
  • Clean Code 4

    형식맞추기

    Read More
  • Clean Code 3

    주석

    Read More
  • Design Pattern 3

    데코레이터 패턴

    Read More
  • O O P 6

    객체의 지도

    Read More
  • Swift 7

    Custom Operator

    Read More
  • O O P 5

    SOLID - 객체 지향 5 원칙

    Read More
  • O O P 5.5

    ISP- 인터페이스 분리 법칙 (Interface segregation principle)

    Read More
  • O O P 5.4

    DIP - 의존관계 역전법칙(Dependency inversion Principle)

    Read More
  • O O P 5.3

    LSP - 리스코프 치환 원칙 (Liskov substitution principle)

    Read More
  • O O P 5.2

    OCP -개방폐쇠 원칙(Open-closed principle)

    Read More
  • O O P 5.1

    SRP - 단일 책임 원칙 (Single responsibility principle)

    Read More
  • F P 4

    Currying - 커링

    Read More
  • F P 3

    Higher Order Function - 고차함수

    Read More
  • F P 2

    Pure Function

    Read More
  • Design Pattern 2

    스트래티지 패턴

    Read More
  • F P 1

    함수 중심 프로그래밍 패러다임

    Read More
  • Swift 6

    Closures

    Read More
  • O O P 4

    Read More
  • Design Pattern 1

    옵저버 패턴

    Read More
  • Clean Code 2

    함수

    Read More
  • O O P 3

    타입, 추상화

    Read More
  • Design Pattern 0

    디자인패턴

    Read More
  • O O P 2

    상태 , 행동 , 식별자

    Read More
  • Swift 5

    POP - Protocol Oriented Programming

    Read More
  • Swift 4

    Extension

    Read More
  • Clean Code 1

    의미있는 이름


    • 의도를 분명히 밝혀라
      • 명확한 이름이 좋다
      • 짐축성을 가진 코드는 의도를 숨긴 코드이다.
      • 단순성과 함축성은 다르다.
         // 함축적 -> 무슨 일을 하는지 구체적으로 드러나지 않은 이름
         func getList() -> [String] {  }
         // 짐작하기 쉬운 이름
         func getNameOfFriendsList()->[String]{ }
        

    • 올바른 정보
      • 유사한 개념은 유사한 표기법을 사용한다.
        •   func add(_ item:Int ){
            // 배열에 추가하는 로직
             }
            func append(_ item:Int ){
            // 배열에 추가하는 로직
            }
          
        • 같은 기능을 수행하나 표기가 다른 건 잘못된 정보전달의 예 이다.
      • 널리쓰이는 단어를 다른 의미로 사용하는 것도 옳지않다
        • func getFriendList() -> [String:Friend]{ }        
          
        • List는 프로그래머에게는 []의 의미를 내포하고 있다 . 딕셔너리 로의 반환은 예상 밖의 기능을 하는 것이다.

    • 불용어(noise word)를 사용하지 마라
      • 의미가 불분명한 이름 - Info,Data,연속적인 숫자
      • 너무 추상화되어있는 이름
      • 중복
          let friend : Any // 이후의 추가될 비슷한 변수를 고려하지 않은 네이밍
          let friendObj : Any // 두개의 변수의 차이를 이름으로 파악하기 어렵다
        

    • 검색하기 쉬운 이름
      • 프로그램 전역에서 사용할 이름은 자주 검색해야한다.
      • 짧은 네이밍은 검색에서 여러 결과를 반환한다.
      • 사용할 범위와 이름의 길이는 비례하는 것이 바람직하다.
          for i in array{
           // 반복문 내부에서만 쓰는 변수는 i 면 충분하다
          }
          static func a{}         // 검색에서 나오는 결과가 많다.
          static func abcdefg{}   // 검색에서 더 용이하다.
        

    • 인코딩을 피해라
      • 부호화는 해독을 방해한다.
      • 멤버변수 접두어는 구닥다리다.

    • 맥락을 추가하라
      • 여러의미를 가지는 단어를 이름으로 선택시 의도가 불분명해진다.
      • let state: String  
        
        • ` 상태?? 주? 파악이 어려워진다.`
      • let addrState 
        
        • 맥락의 추가는 조금 더 의도가 분명해진다

    Read More
  • Swift 3

    Optional


    • 변수에 값이 존재하지 않을 수도 있다는 것을 명시한다. ### 다른 말로 하면 옵셔널이 아닌 변수는 무조건 값을 가져야한다.

    Read More
  • Swift 2

    Procotol

    Read More
  • Swift 1

    Struct

    Read More
  • Swift 0

    Enum


    • 하나로 연관된 주제를 하나의 타입으로 묶어서 사용
    • 조금더 안전한 방식으로 다룰 수 있게 해준다.

      상황

    • 제한된 값 만 입력받고 싶을 때
    • 제한된 값만 선택할수 있게 제한하고싶을 때

    Read More
  • O O P 1

    객체 지향 프로그래밍

    객체지향

    • 현실세계를 문제를 소프트웨어로 해결하기위해 소프트웨어로 표현해야한다.

    Read More