Level : WORDPRESS BOOK LINKEDIN PATENT Send Mail 동냥하기 hajunho.com

반응형


모바일 앱 개발을 하다 보면, 데이터를 저장하거나 전달할 때 프로퍼티의 null 허용 여부를 결정하는 것이 매우 중요합니다. 특히 스위프트나 오브젝티브-C에서는 이러한 속성을 `nullable`과 `nonnull`로 명시하여 코드의 안정성과 명확성을 높일 수 있습니다. 

## Swift의 프로퍼티 속성

스위프트에서는 `nullable`과 `nonnull` 속성을 다음과 같이 정의할 수 있습니다:

```objc
@property (nonatomic, strong) NSString * _Nullable id_atch_file;
@property (nonatomic, strong) NSString * _Nonnull cd_sub_sys;
```

- `id_atch_file`: 이 프로퍼티는 nullable로 설정되어 있어 값이 없을 수도 있습니다.
- `cd_sub_sys`: 이 프로퍼티는 nonnull로 설정되어 반드시 값을 가져야 합니다.

### 나의 사용 철학

1. **혼자 전체 프로젝트 작업(서버 포함) 할 때는 무조건 Nullable...**

    개인 프로젝트에서는 프로퍼티를 nullable로 설정하는 것이 유연성을 제공합니다. 코드 작성 초기에는 데이터 소스를 미리 예측하기 어려운 경우가 많으므로, 이 방식이 디버깅과 기능 확장을 용이하게 합니다.

2. **인터페이스 만들어서 다른 사람에게 줄 때는 NonNull...**

    팀 프로젝트에서는 다른 개발자들이 예상치 못한 null 값을 처리하는 번거로움을 최소화하기 위해 nonnull로 설정하는 것이 좋습니다. 이렇게 하면 협업에서 발생할 수 있는 실수를 줄이고 코드의 가독성을 높일 수 있습니다.

## C++ 클래스에서 Nullable과 NonNull 속성 정의하기

C++에서는 nullable과 nonnull 속성을 직접적으로 정의할 수 있는 키워드는 없습니다. 하지만, 스마트 포인터 `std::shared_ptr`와 `std::unique_ptr`을 통해 유사한 개념을 구현할 수 있습니다.

```cpp
#include <memory>
#include <string>

class MyClass {
public:
    std::shared_ptr<std::string> id_atch_file; // Nullable
    std::string cd_sub_sys;                    // NonNull

    MyClass(const std::string& cd_sub_sys_value) : cd_sub_sys(cd_sub_sys_value) {}
};

int main() {
    // Nullable 속성 사용
    MyClass obj("system_code");
    obj.id_atch_file = std::make_shared<std::string>("file_id");
    
    // NonNull 속성 사용
    if (obj.cd_sub_sys.empty()) {
        // handle error
    }

    return 0;
}
```

- `id_atch_file`: Nullable 속성으로 `std::shared_ptr`를 사용합니다. 값이 없을 경우 null일 수 있습니다.
- `cd_sub_sys`: Nonnull 속성으로 반드시 값을 가져야 합니다. 없는 경우 에러를 처리하는 로직을 추가할 수 있습니다.

### 나의 사용 철학

1. **혼자 전체 프로젝트 작업 할 때는 무조건 Nullable...**

    개인 프로젝트에서는 `std::shared_ptr<T>`를 사용하여 유연하게 데이터를 관리 할 수 있습니다. 데이터의 유무에 따라 프로그램의 로직을 동적으로 변경할 수 있어 디버깅과 기능 확장에서 유리합니다.

2. **인터페이스 만들어서 다른 사람에게 줄 때는 NonNull...**

    팀 프로젝트에서는 반드시 값을 가져야 하는 데이터를 일반 변수로 선언하여 명시적으로 그 중요성을 표현합니다. 이렇게 하면 협업에서 발생할 수 있는 실수를 줄이고, 유지보수에 용이합니다.

## 결론

Swift와 C++에서 프로퍼티의 null 허용 여부를 관리하는 것은 코드 안정성과 가독성을 높이는 데 중요합니다. 개인 프로젝트에서는 유연성을 위해 nullable 속성을, 팀 프로젝트에서는 명확성을 위해 nonnull 속성을 사용하는 것이 좋습니다. 이러한 원칙을 잘 이해하고 적용하면, 보다 유지보수하기 쉽고 안정적인 코드를 작성할 수 있습니다.

반응형

'C++' 카테고리의 다른 글

Objective-C에서 메모리 사용 최적화와 Swift 마이그레이션 경험  (0) 2021.06.11
objc2C++UIAlertController  (0) 2021.05.31
objc2C++select 구현 예제  (0) 2021.05.26
sqlite3 파일 생성  (0) 2021.05.26
sql 공통 .h, .m 작성법  (0) 2021.05.26
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기