Effective Dart: Library in usage

MJ·2023년 6월 11일
0

Dart Basic

목록 보기
5/12

라이브러리

part of 명령어에 문자열을 사용한다

  • library 파일을 직접 가리키는 URI string을 사용하는 것이 좋다
  • 이름만 사용한다면 해당 부분이 실제 어떤 라이브러리에 속하는지 모호할 수 있음
// good
part of '../../my_library.dart';

// bad
part of my_library;

다른 패키지의 src 디렉토리에 있는 라이브러리를 import하지 않는다

  • lib 아래 src 디렉토리는 패키지가 자체적으로 구현한 private 라이브러리로 지정됨
  • 패키지 관리자가 패키지를 버전화하는 박식은 이런 규칙을 고려함
  • 관리자는 패키지를 손상시키지 않고 src 디렉토리 아래의 코드를 자유롭게 수정함
    -> 즉 다른 패키지의 private 라이브러리를 import할 경우, 내 코드가 정상동작하지 않을 수 있음

Import 경로를 lib 안팎으로 지정하지 않는다

  • package: import는 패키지가 컴퓨터의 어디에 저장되어 있는 상관없이 패키지의 lib 디렉토리 내부의 라이브러리에 접근할 수 있게 해줌
  • lib 내부 파일의 상대적인 import 경로는 lib 디렉토리 외부의 파일에 도달하거나 접근할 수 없으며 lib 외부의 라이브러리는 lib 디렉토리를 사용할 때 상대경로를 사용할 수 없음

    예제 구조
    my_package
    └─ lib
    └─ api.dart
    test
    └─ api_test.dart

// in api_test.dart
// bad
import '../lib/api.dart';

-> Dart에서는 위의 두가지 import가 전혀 관계없는 라이브러리에 대한 import로 간주함 따라서 아래와 같은 규칙을 지켜야한다

  • import 경로에 /lib/를 사용하지 않는다
  • lib 디렉토리를 벗어나기 위해 ../를 사용하지 않는다
// in api_test.dart
// good
import 'package:my_package/api.dart';

상대 경로를 사용하지 import하는 것을 지향

  • import가 lib를 벗어나지 않을 때는 상대 경로를 사용하지 import를 하는 것이 좋다

    예제 구조
    my_package
    └─ lib
    ├─ src
    │ └─ stuff.dart
    │ └─ utils.dart
    └─ api.dart
    test
    │─ api_test.dart
    └─ test_utils.dart

// lib/api.dart
import 'src/stuff.dart';
impott 'src/utils.dart';

// lib/src/utils.dart
import '../api.dart';
import 'stuff.dart';

// test/api_test.dart
import 'package:my_package/api.dart'; // 'lib'에 도달하지 못함.
import 'test_utils.dart'; // 'test'라는 같은 폴더에 존재.
profile
느긋하게 살자!

0개의 댓글