데일리 미션/Article

Article : SQL 가독성을 높이는 다섯 가지 사소한 습관

pipiiiiii 2024. 1. 22. 10:05

https://datarian.io/blog/good-sql-code

 

SQL 가독성을 높이는 다섯 가지 사소한 습관

지독하게 읽기 힘든 SQL문을 해석해 본 적 있으신가요?

datarian.io

 

 

 

 

<아티클 내용 요약>

- SQL은 띄어쓰기, 들여 쓰기에 거의 규칙이 없다시피 한 언어이다. 

- 파이썬 같이 들여 쓰기, 띄어쓰기를 문법적으로 강제하는 언어를 써보면 SQL의 자유로움에 해방감을 느낄지도 모르지만 다른 사람이 작성한 SQL 문을 해독하면서 힘들 수 있다. 

- SQL 문법에서는 강제하지 않지만, 가독성 있는 SQL 코드를 쓸 수 있는 다섯 가지 습관을 알려준다. 

 

 

1. 예약어는 대문자로

- SELECT, FROM, GROUP BY와 같은 SQL 예약어들을 대문자로 쓰는 습관이다. 

- SQL 언어를 지원하는 에디터를 사용하면 예약어들을 컬럼이나 테이블 이름과는 다른 색으로 하이라이팅을 해주기 때문에 굳이 대문자를 사용하지 않아도 잘 보인다. 

- 하지만 에디터마다 하이라이팅 규칙이 다르고 DB 종류마다 함수들 이름도 약간씩 다르기 때문에 하이라이팅이 제대로 되지 않는 경우도 있으니 대문자로 써주는 습관이 있으면 좋다. 

 

 

2. 행갈이를 자주 하자 

- 한 라인에 코드를 쭉 쓰면 의미를 파악하기 위해 모든 코드를 다 읽어봐야 하지만 행갈이를 잘하면 각 라인의 첫 번째 예약어만 읽어도 작성자의 의도와 코드의 구조를 알 수 있다. 

 

 

3. 행갈이를 더 자주 하자

- 행갈이를 잘하면 주석처리를 할 때 진가를 발휘한다. 

- 쿼리를 작성할 때 어떤 로직을 제외했다가 포함시켜야 할 경우가 발생할 때는 행갈이를 더! 자주 하는 습관이 빛을 발한다.  

- 어떤 사람들은 WHERE 절을 시작하자마자  '1 = 1'이라는 아무 의미 없는 조건을 넣어주고 행갈이를 한 다음 필터링 조건을 쓰기 시작하는 사람도 있다. 

 

 

4. 주석을 쓰자

- 코드를 쓴 의도를 짤막하게라도 적어놓는 습관을 들이는 게 좋다. 

- 서브쿼리가 많아지고 코드가 길어질수록 코드 단락이 어떤 의도로 작성되었는지 디테일을 적어놓아야 다음에 그 코드를 읽었을 때 이해할 수 있다. 

- 주석으로 적어주면 좋은 것들

  1. 서브쿼리의 단위로 의미를 적어주기
  2. 조건에 적은 주석의 경우, 단순히 '이 조건은 이거다'라고 서술하는 것은 의미가 없다. 그러나 컬럼 이름만 보고 해석에 오해가 있을 수 있거나, 추가 설명이 필요한 경우에는 적어주기
  3. 조건이 왜 필요한지, 어떻게 동작하는지 같은 디테일을 적어놓으면 추후에 코드를 이해하는 데 도움을 주니 적어주기 

 

 

5. Alias를 잘 쓰자

- 서브쿼리, 컬럼 이름을 대충 쓰면 나중에 어떤 쿼리의 이름인지 몰라서 그 이름을 사용한 서브쿼리까지 찾아가야 하는 경우가 생긴다.  

- 데이터 분석용으로 쓰는 쿼리는 재활용할 일이 많지 않아 작명의 고통을 받아가며 이름을 작명해야 하나 싶지만 다음에 그 코드를 다시 보면 고통받을 수 있으니 애초에 잘 만드는 것이 좋다. 

- 희소식은 구글에 '변수명 짓기 팁'을검색하면 수많은 선배 작명가들이 팁을 알려준다. 

 

 

- 여러 규칙을 이야기했지만 가장 중요한 것은 같이 일하는 사람들과 합의된 규칙이다. 

- 아무리 좋은 방법이라도 팀에서 사용하고 있는 컨벤션에 위배된다면, 기존 구성원들을 설득하고 레거시 코드들을 죄다 바꾸는 수고를 하지 않는 한 일단 기존 제도를 따라야 한다고 생각한다. 

- 코드를 나 말고 누군가 볼 거라고 생각하면서 작성하고 정리하는 것이 중요하다. 

 

 

 

 

<알게 된 개념>

- SQL을 작성하면서 신경 쓰지 않았던 부분들을 다시 돌아보게 되는 내용들이었다. 그리고 나도 행갈이랑 많은 것들의 습관을 고쳐야겠다는 생각이 들었다.