본문 바로가기
Flutter

플러터 코딩 스타일 가이드

by Maccrey Coding 2024. 7. 16.
반응형

 

플러터는 구글에서 만든 오픈소스 UI 소프트웨어 개발 키트(SDK)로, 모바일, 웹, 데스크톱 애플리케이션을 개발할 수 있습니다. 플러터 코드의 일관성을 유지하고 가독성을 높이기 위해 아래와 같은 스타일 가이드를 따르는 것이 좋습니다.

1. 들여쓰기

플러터에서는 들여쓰기로 스페이스 2칸을 사용하는 것이 일반적입니다.

void main() {
  runApp(MyApp());
}

2. 파일 및 디렉토리 구조

플러터 프로젝트에서는 파일 및 디렉토리를 일관성 있게 구성하는 것이 중요합니다.

  • lib 디렉토리: 소스 코드는 lib 디렉토리에 위치합니다.
  • 각종 폴더: screens, widgets, models, services 등의 폴더를 사용하여 코드를 모듈화합니다.
lib/
  screens/
    home_screen.dart
    detail_screen.dart
  widgets/
    custom_button.dart
    custom_card.dart
  models/
    user.dart
  services/
    api_service.dart
  main.dart

3. 파일 이름

파일 이름은 소문자와 밑줄(_)을 사용하여 작성합니다.

# 좋은 예
home_screen.dart
custom_button.dart

# 나쁜 예
HomeScreen.dart
CustomButton.dart

4. 클래스 이름

클래스 이름은 파스칼 케이스(PascalCase)를 사용합니다.

class HomeScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Home Screen'),
      ),
      body: Center(
        child: Text('Welcome to the Home Screen!'),
      ),
    );
  }
}

5. 변수와 함수 이름

변수와 함수 이름은 카멜 케이스(camelCase)를 사용합니다.

void fetchData() {
  String userName = 'John Doe';
}

6. 상수

상수 이름은 모두 대문자와 밑줄(_)을 사용합니다.

const String API_KEY = 'your_api_key_here';

7. 위젯 구성

플러터에서는 위젯을 잘 구성하여 코드의 가독성을 높이는 것이 중요합니다. 하나의 위젯에 너무 많은 코드가 포함되지 않도록 작은 위젯으로 나누어 작성합니다.

class HomeScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Home Screen'),
      ),
      body: Center(
        child: CustomButton(),
      ),
    );
  }
}

class CustomButton extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return ElevatedButton(
      onPressed: () {
        // 버튼 클릭 시 수행할 작업
      },
      child: Text('Click Me'),
    );
  }
}

8. 주석

주석은 코드의 이해를 돕기 위해 사용되며, 명확하고 간결하게 작성합니다.

  • 한 줄 주석: 코드와 같은 줄에 주석을 달 때는 최소 두 칸의 공백을 두고 //를 사용합니다.
void incrementCounter() {
  counter++;  // 카운터 값을 1 증가시킵니다.
}
  • 블록 주석: 여러 줄에 걸쳐 주석을 달 때는 각 줄마다 //를 사용합니다.
// 이 함수는 사용자 데이터를 서버로부터 가져옵니다.
// 데이터가 성공적으로 받아지면 화면에 표시합니다.
void fetchData() {
  // ...
}

9. 상속과 오버라이드

오버라이드하는 메서드에는 @override 어노테이션을 사용합니다.

class HomeScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Home Screen'),
      ),
      body: Center(
        child: Text('Welcome to the Home Screen!'),
      ),
    );
  }
}

10. 코드 형식화

코드를 일관되게 유지하려면 플러터의 내장 코드 형식화 도구를 사용합니다. VSCode에서는 Shift + Alt + F, IntelliJ에서는 Ctrl + Alt + L을 사용하여 코드를 형식화할 수 있습니다.

11. 불필요한 코드 제거

사용하지 않는 임포트, 변수, 메서드 등을 코드에서 제거하여 깔끔한 상태를 유지합니다. IDE의 자동 정리 기능을 사용하면 편리합니다.

12. 네이밍 컨벤션

  • 이벤트 핸들러: on으로 시작합니다.
void onPressed() {
  // 버튼이 눌렸을 때 실행되는 코드
}
  • 비동기 함수: async와 await를 사용합니다.
Future<void> fetchData() async {
  var data = await apiService.getData();
  // 데이터를 처리하는 코드
}

결론

플러터 스타일 가이드를 따르면 코드의 가독성과 유지보수성을 크게 높일 수 있습니다.

위에서 다룬 가이드라인을 참고하여 코드를 작성하면, 다른 개발자들과의 협업 시에도 코드의 일관성을 유지하고, 프로젝트의 품질을 높일 수 있습니다.

여러분도 플러터 스타일 가이드를 준수하여 더 나은 플러터 애플리케이션을 개발해보세요!

반응형