본문 바로가기
반응형

IDE45

Airbnb의 eslint를 IntelliJ에 적용하기 안녕하세요? 이번 시간엔 airbnb의 eslint를 IntelliJ에 적용하는 예제를 진행해보려고 합니다. 모든 코드는 Github에 있기 때문에 함께 보시면 더 이해하기 쉬우실 것 같습니다. (공부한 내용을 정리하는 Github와 세미나+책 후기를 정리하는 Github, 이 모든 내용을 담고 있는 블로그가 있습니다. ) 들어가며 팀내에서 프론트엔드 코딩 컨벤션을 정하자는 이야기가 나왔습니다. 구성원 모두가 백엔드 개발자이며, 메인 언어가 되는 Java를 다들 최근에 시작하셔서(기존엔 ASP, PHP) Java & 백엔드 학습으로도 시간이 부족하기에 프론트엔드 쪽은 거의 등한시 하고 있었습니다. 그러다 최근에 큰 프로젝트가 끝나고 회고 시간에 백엔드 코드에 비해 프론트엔드 코드가 컨벤션없이 작성되어 퀄.. 2017. 10. 3.
악취나는 코드 개선하기 시리즈 - 값의 가변성 (Mutation) IntelliJ 블로그에 올라온 시리즈물을 번역 & 재정리 하였습니다. 4. Code Smells: 값의 가변성 (변경가능한 값) 심하게 중첩된 코드글에서 저는 getMappedField 메소드의 리턴 타입을 Optional로 변경하고 싶었습니다. 변경자체는 굉장히 사소한 일이지만, 그 메소드를 호출하는 코드들의 변경은… 음 또다른 문제였습니다. QueryValidator클래스의 validateQuery메소드는 여러 호출자 중에서 예상했던 것보다 훨씬 더 복잡한 메소드였습니다. getMappedField를 Optional로 변경하려고 할때, 놀라울 정도로 많은 Null 체크 코드를 isPresent로 변경했습니다. 이게 전부가 아닙니다. 이 메소드는 거의 100라인이라 1개의 캡쳐화면에 전부 담을수가 없.. 2017. 9. 18.
악취나는 코드 개선하기 시리즈 - 순회 (Iteration) IntelliJ 블로그에 올라온 시리즈물을 번역 & 재정리 하였습니다. 3. Code Smells: 반복 저번시간엔 의심스러운 중첩 코드를 살펴 보았습니다. 이 문제를 해결하는 가장 좋은 방법은 기존 클래스에서 데이터를 가진 클래스의 내부를 이해하고 다루는것인 아니라, 행위 자체를 이동시키는 것이라고 추천드렸습니다. 그러나 이것이 그 이야기의 끝이 아닙니다. 이번 글에서는 코드 반복이 야기시킬 수 있는 다른 문제를 탐구하려고 합니다. 마지막 예제에서 중첩된 루프는 로직이 잘못된 위치에 있었던 것이라고 제안드렸습니다. 새로 만든 hasName메소드에서 반복이 존재하는 것은 for 루프 또는 stream를 사용하여 구현한것과 관계없이 또다른 문제점을 제시합니다. 아마도 이것은 name 데이터들을 저장하는 올.. 2017. 9. 6.
악취나는 코드 개선하기 시리즈 - 심하게 중첩된 코드 IntelliJ 블로그에 올라온 시리즈물을 번역 & 재정리 하였습니다. 2. Code Smells: 심하게 중첩된 코드 악취나는 코드 개선하기 시리즈를 계속 진행하며, 이번 포스트에서는 명백한 리펙토링을 거부하는 천진난만한 코드를 살펴 보려고 합니다. 코드 예제 자체는 매우 사소한 것이지만 실제로는 이 특정 프로젝트에서 반복적으로 발견되는 문제의 증상입니다. 즉, 코드의 중첩입니다. 이것은 loop문, if 문, 심지어 람다 표현식 또는 내부 클래스, 또는 위의 모든 것의 조합 일 수 있습니다. The Smell: Deeply Nested Code 먼저 발견한 문제있는 코드는 내부 if 문이있는 double for 루프입니다. (MappedClass의 메소드) 이 코드의 문제점은 무엇입니까? 단일 문자 .. 2017. 9. 3.
악취나는 코드 개선하기 시리즈 - NULL IntelliJ 블로그에 올라온 시리즈물을 번역 & 재정리 하였습니다. 1. Code Smells: Null 리팩토링에 대한 연구 중에 저는 여러가지 패턴(냄새나는 패턴)이 계속해서 반복되는 것을 보았습니다. 이런 패턴들은 특별히 새로운 것이 하나도 없으며, 많은 책들(리팩토링, 패턴을 활용한 리팩토링)과 블로그 및 동영상 에서 이런 냄새나는 패턴들을 어떻게 다루는지 알려주고 있습니다. 하지만 저는 IntelliJ IDEA가 어떻게 당신을 도울 수 있는지 (아닐 수도 있지만) 몇 가지 구체적이고 사소한 예로 설명하고 싶었습니다. 내가 반대하려는 첫 번째 문제는 null을 사용하는 것입니다. 특히 null-check 코드가 주위에 흩어져있을 때 더욱 그렇습니다. Java 8의 Optional은 이러한 많은.. 2017. 9. 2.
2017.2 버전에 추가된 기능 정리 IntelliJ 2017.2 버전에서 추가된 기능에 대한 소개가 IntelliJ 블로그에 올라와 정리하였습니다. Endpoints TabEndpoints Tab이 추가되었습니다. Run/Debug 실행시 등장하는 화면에는 이제 SpringBoot Actuator의 Beans, Health, Mapping 정보들이 같이 노출됩니다. 단, 해당 기능은 compile('org.springframework.boot:spring-boot-starter-actuator')과 같이 프로젝트에 spring-boot-starter-actuator 의존성이 포함되어있어야만 합니다. (spring-boot-starter-actuator가 없을 경우) (spring-boot-starter-actuator가 있을 경우 - He.. 2017. 8. 31.

728x90