본문 바로가기
Flutter/깨알 Tip

[Dart + Flutter] 플러터 개발자가 지켜줬으면 하는 2가지 작성 규칙

by Couldi 2021. 11. 3.
반응형

https://iisprey.medium.com/fix-your-dart-damn-syntax-b3d3474373bd

 

Fix your Dart DAMN Syntax

A cheatsheet for Dart/Flutter newcomers or dummies

iisprey.medium.com

위 블로그 글을 보고 감동받았다.

코드를 짤때 막연히 그렇게 적어야하지! 라고 생각했던 내용들을 정말 일목요연하고 깔끔하게 정리해뒀던듯.

구체적인 변수명을 짓거나 하는 건 개발자 개인의 역량이지만, 위 규칙은 Dart와 Flutter를 다룬다면 최소한 지켜줘야할 Syntax라고 하겠다.

 

Syntax라고 해봤자 거창한게 아니다.

위키는 위와 같이 정의하고 있으며, 그냥 지켜주면 좋은 코드 작성 규칙정도라고 생각하면 좋다. 이 작성규칙을 어긴다고 잘돌아가던 프로그램이 노조를 결성해 파업을 하거나 하는건 아니지만, 해당 규칙들을 지켜주면 그 모양만으로도 코드의 쓰임새를 짐작할 수 있게 된다.

 

관련해서 간단히 핵심요약만 보고 싶다면 위 링크의 글을 참고하고, 자세하지는 않지만 간단한 해설이 알고 싶다면 이 글을 참고해보면 좋을 것 같다.

 

1. Naming Convention 지키기
2. Write every Type Everywhere(타입을 꼭 적어주자!)

 

1. Naming Convention 지키기

네이밍 컨벤션은 프로그래밍할때 폴더나 파일명, 변수명, 함수명, 클래스명 등을 지을때 지키면 좋은 규칙이다. 사람들 간의 합의에 따라 사용되고 있는 거라 프로그래밍 언어마다 차이를 보인다. 많이 쓰이는 명명법에는 PascalCase, camelCase, snake_case 가 있다. 이걸 다른 이름으로 부르기도 하고, 언급하지 않은 다른 명명법도 있지만 저 세개만 알면된다. 나머지는 나중에 보게되더라도 흘려버리자.

일단 각 명명법을 적은 방법처럼 이름을 짓는다. 보통 프로그래밍에서 무언가를 지칭하는 이름은 띄어쓰기 없이 작성을 해야한다. 그래서 개발자들이 생각한 방법은 '대소문자 구분으로 띄어쓰기를 대신하자', '언더바(_)를 넣어서 띄어쓰기를 표현하자' 였다.

그렇게 각 언어의 개발자들의 취향에 따라 네이밍컨벤션이 결정이 되어 사용 중이고, Dart는 기본적으로 카멜케이스를 원칙으로 삼고 있다. 개인적으로 카멜케이스를 선호하는데, 덕분에 Dart가 더 좋아졌다.

Dart는 일단 카멜케이스가 기본이다. 카멜케이스를 기본으로 클래스 관련 네이밍에는 파스칼케이스를 사용하고, 폴더/파일명에는 스네이크케이스를 사용한다.

각 사용 케이스에 따라 분류하면 아래와 같다.

snake_case

  • folders/files

camelCase

  • functions
  • variables
  • constants

PascalCase

  • classes
  • extensions
  • mixins

대부분 위 규칙에서 벗어나지 않는다. 이넘(enums) 같은 경우는 이름은 파스칼케이스로, 안의 파라미터들은 카멜케이스로 적는다.

enum Name { ENUM, NAME } // WRONG!!

enum Name { enum, name } // RIGHT!!

2. Write every Type Everywhere(타입을 꼭 적어주자!)

 내가 Dart와 플러터에서 또 좋아하는 부분이다. 타입을 꼭 적어주자. 이 부분은 Dart나 flutter 프로그래밍을 하다보면, formmatting의 집요한 강요로 Null Safety와 함께 저절로 잘 지켜지는 부분이다.

그래서 무시하고 넘어갈까 하다가, '타입의 선언을 안하는 언어들도 있고, 하던지 말던지 마음대로 해!' 라고 하는 언어도 있어, 언급하기로 결정했다.

안 적어도 그 언어가  자동으로 처리해 주는거면 좋은거 아냐? 라고 생각 할 수도 있다. 하지만 꼭 그렇지는 않다.

데이터타입을 적어주지 않는다고 데이터타입이 없는 건 아니다. 특정 기능의 구현을 위해서는 숫자만 받아야하는 부분이 있을 수도 있고, 문자만 받아야하는 부분이 있을 수도 있다. 그런데 한눈에 변수안에 어떤 데이터가 들어가야하는지 이해가 되지 않는다면? 어쩔수 없이 처음부터 하나하나 읽어서 어떤 데이터가 들어가는지 확인해야한다. 데이터타입을 적지 않으면 코드가 보다 짧고 보기에 아주 조금 깔끔해 보일지는 몰라도, 데이터타입을 적을때 얻을 때 얻을 수 있는 이점에 비하면 그건 정말 사소한 장점일 뿐이다. 그러니 꼭, 데이터타입을 신경쓰고 작성하는 습관을 들이자.

프로그래밍 초보자의 입장에서는 분명 신경써야하는 부분이 늘어나는 귀찮은 부분일지 몰라도, 쓰다보면 이 데이터타입에 대한 표기가 주는 안정감에 감동 받을 날이 올거라 생각한다.

 

add(a,b) => a + b; // DAMN WRONG

int add(int a, int b) => a + b;  // HELL YEAH

 

딱 봐도 위 코드는 근본없어보이고, 밑에 코드는 체계가 있어 보이지 않는가?

(농담일뿐이니, 데이터타입 기재를 강제하지 않는 몇몇 언어의 팬 분들이 죽자고 덤벼들지 않았으면 한다.)

반응형

댓글