728x90

 

코드리뷰시 자주 등장하는 코딩 용어(약어) : DRY, KISS, YAGNI

 

1.DRY(Don’t Repeat Yourself)

특정한 지식,의도,로직 등이 다양한 곳에서 다양한 형태로 계속 반복되게 하지마라

시스탬 내에서 특정한 지식과 로직은 단 한 곳에서 명확하고 신뢰할 수 있도록 존재해야함

코드(code), 기능(functionality), 로직(logic) 등이 반복적으로 나타나는 경우 반복을 피하라

↔ WET(Write Everything Twice, Waste Everyone’s Time)

 

why?

수정해야할 시, 반복되는 코드 전부를 하나씩 다 찾아서 수정해야하고 실수해서 한군데 빠뜨린다면 유지보수는 헬일 것

 

 

DRY

WET

 

 

2.KISS(Keep It Simple, Stupid)

대부분의 시스템은 복잡하기보다는 심플하게 만들어졌을 때, 최고로 잘 작동한다

시스템 디자인 시, 심플함이 주 목표이 되어야하고 불필요한 복잡성은 피해야한다

별도의 주석 없이도 함수명, 매개변수, 구현된 코드를 읽었을 때 한번에 이해할 수 있도록 1가지의 기능을 수행하는 함수를 심플하게 작동하는게 좋다

ex)10줄 코드를 1줄 코드로 바꾸기 위해, 화려한 테크닉을 이용하여 가독성을 떨어뜨리기 보다는 누구나 이해할 수 있게 심플하고 간결하게 작성하는게 좋다

  • 1가지의 책임만 담당하는 클래스 작성이 좋다
  • UI를 담당하는 컴포넌트에는 별도의 비지니스 로직을 포함하지 않고, 최대한 심플하게 UI 관련 로직만 담당해야함
  • 서비스를 만들 때도, 여러가지 기능을 복잡적으로 담당하는 하나의 큰 서비스를 만들기 보다 단 하나의 기능을 담당하는 개별적인 심플한 서비스를 만드는 것이 좋다
  • 위의 것들을 통해서 전체적인 시스템을 KISS하게 심플하게 제작가능

 

3.YAGNI(You Ain’t Gonna Need It)

필요없는 기능을 작성하지마라

필요한 기능만 초점을 두고 코드를 디자인해야함

  • 필요하지 않은 기능 x
  • 사용하지 않는 기능 x
  • 지나지체 미래지향적 x

앞으로 필요할 것 같은 것을 지나치게 만들거나 염두해두는 코드들은 필요x

시스템에 불필요한 ‘복잡성’을 더 하지 않는 선에서 코드 디자인하라는 의미

 

※ 필요 없어진 코드는 주석처리보다 Git으로 브랜치를 나눠서 기능별로 버젼관리로 저장해두는 것을 추천

 

자료 출처 : https://www.youtube.com/watch?v=jafa3cqoAVM&t=286s

 

728x90
반응형
728x90

출처: <https://www.youtube.com/watch?v=sQEmlaNXJZk&list=PLuHgQVnccGMDkdt3N9tT0aZPZx5-Ri2jo&index=1>

 

JAVA method - 1. 수업소개

코드의 양이 많아지면 정리하고 싶게 될 것인데, 연관된 코드를 모아서 그루핑(grouping)하고 이름을 붙이면 이것이 함수(function)이고 자바에서는 메소드라고 부름

이미 만들어 놓은 메소드를 사용해서 똑같은 코드를 다시 작성할 필요 없이 재사용 가능

 

 


 

JAVA method - 2. 이미 익숙한 메소드

메인 메소드를 쓰면서 이미 메소드를 사용해옴

main도 메인이라는 메소드. 처음부터 끝까지 하나의 메소드

println()도 입력값을 모니터로 출력하는 메소드

math.floor(1.1)); // 내림 메소드. 1.1을 1.0으로

 


 

JAVA method - 3. 메소드의 기본 형식

반복되는 1억줄의 코드를 하나씩 변경해야한다면?

연관된 코드를 그루핑해서 이름을 붙이자(메소드 작성)

아래처럼 반복되는 코드를 따로 메소드를 만들어서 관리(수정)할 때도 편하고 코드도 줄어들어서 필히 사용해야할 기능

 

 

public static void printTwoTimesA() {

이 줄을 보고 자바는 이런 메소드 있고 이런 내용을 가졌구나 하고 기억해둠

 

 

System.out.println("A"); // 둘이 같은 코드

printTwoTimesA();
  • 여기서 코드수정시 이 메소드를 쓴 모든 코드에 적용되어 엄청난 생산성업

 

 

 

public class method010203 {
	public static void printTwoTimesA() {// 이 줄울 보고 자바는 이런 메소드 있고 이런 내용을 가졌구나
		System.out.println("-");		 // 하고 기억해둠
		System.out.println("A");		 // 여기서 코드수정시 이 메소드를 쓴 모든 코드에 적용되어 엄청난 생산성업
		System.out.println("A");
	}
	public static void main(String[] args) { // 여기 main도 메인이라는 메소드. 처음부터 끝까지
		System.out.println("hello"); // println도 입력값을 모니터로 출력해주는 메소드
		System.out.println(Math.floor(1.1)); // 내림 메소드. 1.1을 1.0으로
		
	
		// 1억번 반복
		printTwoTimesA();
//		// 1억번 반복
//		System.out.println("-");
//		System.out.println("A");
//		System.out.println("A");
//		// 1억번 반복
//		System.out.println("-");
//		System.out.println("A");
//		System.out.println("A"); // 이 반복되는 코드들을 위에 만들어둔 메소드 printTwoTimesA로 변경
		// 1억번 반복				 // 같은 일하게 된다
		printTwoTimesA();		
		// 1억번 반복
		printTwoTimesA();
		
		// 이클립스 refactoring 기능
		// 매소드로 만들기를 원하는 부분을 드래그 범위 지정-우클릭 refactoring 클릭-우측 extract method 클릭
		// 프리뷰 기능을 이용하여 어찌 바뀔껀지 미리 확인가능
	}

}

 

 

※ 이클립스 리팩토링refactoring : 메소드화 기능

이클립스 refactoring기능을 이용하면 해당 부분을 쉽게 메소드화 가능하다

[메소드로 만들기를 원하는 부분을 드래그 범위 지정] - [우클릭 refactoring 클릭] - [우측 extract method 클릭]

 

 - 프리뷰 기능을 이용하여 어찌 바뀔껀지 미리 확인가능

728x90
반응형

+ Recent posts