본문 바로가기

IT개념/프로그래밍상식

(16)
클린코드 6장 자료와 객체구조 변수를 비공개private로 정의하는 이유가 있다. 남들이 변수에 의존하지 않게 만들고 싶어서다. 충동이든 변덕이든, 변수 타입이나 구현을 맘대로 바꾸고 싶어서다. 그렇다면 어째서 수많은 프로그래머가 조회get 함수와 설정set 함수를 당연하게 공개public해 비공개 변수를 외부에 노출할까?자료 추상화 목록 6-1 구체적인 Point 클래스public class Point { public double x; public double y;} 목록 6-2 추상적인 Point 클래스public interface Point { double getX(); double getY(); void setCartesian(double x, double y); double getR(); double get..
클린코드 5장 형식맞추기 코드 형식 맞추기, 다른 말로 코딩 컨벤션이라 할 수 있다.형식을 맞추는 목적은, 앞으로 기능이 계속 바뀌어도, 처음 잡아놓은 가독성과 스타일은, 유지보수 용이성과 확장성에 계속 영향을 미치기 때문이다. 1. 적절한 행 길이세로 길이부터 적절히 유지하자.평균 65줄, 보통 200줄, 500줄이 넘으면 읽기가 힘들다. 실제로 본인 업무 프로젝트의 소스코드중 4~5000줄 그 이상 10000줄까지 넘어가 파일을 열 때 오랜 로딩과, 수정 시의 압박을 느끼게 되는 쿼리 파일이 있다. 이런 짓은 하지말자.. 2. 개념 단위는 빈 행으로 구분하자.우리는 소스를 글을 읽듯이 위에서 아래로, 왼쪽에서 오른쪽으로 읽느다.하나의 완결된 생각 사이에는 빈 행을 넣어 분리해야 마땅하다. 3. 세로 밀집도.서로 밀접한 연관을..
클린코드 2장 의미 있는 이름 소프트웨어에서 변수, 메소드, 클래스, 파일 및 패키지 명까지 모든 곳에는 이름을 붙여야한다. 이름이 무슨 기능을 하나 대충 지을 수 있다 생각하지만 깔끔한 코드에는 명확하고 규칙적인 네이밍이 필수다. 누가 읽어도 이해할 수 있는 코드가 좋은코드이다. 난독화가 목적이 아닌 이상, 의도가 분명한, 누가 읽어도 무슨 역할을 하는지 이해할 수 있도록 작명하여야 한다. 오해할 수 있는 여지가 있는 네이밍은 피해야한다. 추가로 소문자 l과 대문자 O는 1과 0 그리고 대문자 I와 구분하기 어려우므로 이러한 문자들도 피하자. 이 또한 중요한데, 값을 하드코딩하는 것을 포함하여 값의 정보로 변수를 표기하면 검색 시 불편함이 있다. 그러므로 목적에 맞는 네이밍으로 검색을 쉽게 하자. 한 가지 예시로 이벤트나 익셉션을 ..
클린코드 1장 깨끗한 코드 좋은 코드는 어떤 코드인가 읽기쉬운코드, 한가지 기능만 하는 코드, 중복이 없는코드.... 가장 와닿은 의견은 짐작한 기능을 그대로 이루는 코드이다. 너무 당연하고 명백해 심오한 발언이라 여겨지지 않는다. 짐작하는 기능을 수행하는것이 당연하지 않던가? 하지만 짐작한 기능을 그대로 수행하는 모듈을 마지막으로 접한게 언제였던가? 코드의 기능을 살펴보려면 전체 시스템부터 논리를 찾으려 애썼던 기억에 고개를 끄덕이게 된다. 우리는 좋은 코드를 작성하는데에는 아키텍처나 프레임워크, 언어 등 고차원적인 요소가 품질을 결정한다고 생각하지만, 이 책에서는 단순한 들여쓰기 스타일로 가치를 만들어내고 사소한 것 하나에서 깨끗한 코드가 탄생한다고 알려주고 있다. 클린코드는 이를 통해 우리가 우아하고 직관적인 코드를 작성할 ..
OOP, AOP 리팩터링 작업 예시) 결제창 호출 메소드 컨트롤러, 서비스 역할이 혼동되어 유효성검증과, 각종 변수와 메소드들이 마구잡이로 선언되어있는 소스 역할분리하여 필요한 것만 남기고, 나머지는 다 서비스 레이어로 불필요한 메소드 제거, 검증로직은 모두 CustomException 통해 모듈화 필드명 안맞는것 고치기엔 리스크가 커서 스킵했다. try catch는 리턴 타입 구분으로 못없앴다. 이게 최선인거같은데 ex) before, after
WAS 최적화와 트러블슈팅 싸이웰시스템 웨비나 정리 노션 이미지 복사가 안되서 링크로 첨부 세션1 ) WAS 전반 내용 1. WAS(JAVA)를 사용하기 앞서 - JVM과 JDK 개념과 이해 - JDK 버전별 호환성 - JDK Option 2. GC - GC 동작방식 - GC 의 종류 - GC 트러블슈팅 - GC 모니터링 - APM 3. JAVA_OPTION - standard options - non standard / advanced option 4. 권장 Setting - 서버 세팅 - Thread Pool 세팅 - Data Source 권장설정 - GC 권장 설정 https://pastoral-orangutan-b4e.notion.site/WAS-1-2744a09ec0664d2eaf906966c24a9a6e WAS사용자교육..
[DEVIEW2023] 런타임 데드 코드 분석 도구 Scavenger *DEVIEW2023에서 열린 네이버 플랫폼 랩스의 김태연, 권오준 개발자님의 강연을 그대로 개인 학습을 위해 정리한 포스트입니다. https://youtu.be/qE7HY7Y-5vs *Scavenger는 DEVIEW2023에서 네이버가 공개한 오픈소스 프로젝트입니다. 1. Dead Code란? 실행되지 않는 코드를 뜻합니다. (Unreachable) 아래는 예시 소스입니다. final int age = 25; if (age>20){ System.out.println("Okay"); } else { System.out.println("Nope"); } 위 조건문에서 변수 age는 else로 분기될 수 없으므로 영영 사용되지 않는 else는 Dead Code입니다. 간단한 예시를 들었지만 소스 상에서 사용..
인텔리제이 자주쓰는 단축키 보호되어 있는 글입니다.