Enum : 형변환없이 바로 쓸 수 있음, 변수 이름 중복 불가능
Enum Class : 형변환하지 않으면 오류 발생, 변수 이름 중복 가능
Namespace : 형변환 없어도 바로 쓸 수 있음, 변수 이름 중복 가능
Enum Class는 대체 왜 존재하는거임? Enum이랑 다르게 앞에 명시적 형변환 (int) 하나 하나 붙여야해서 가독성도 떨어지는데다 똑같은 기능인 네임스페이스 안에 Const int 박아놓는게 훨씬 쓰기 편하고 컴파일 속도 빼면 이점이 없는 것 같은데... 대체 왜? 마지막으로 리팩토링하면서 네임스페이스 + Const int로 밀어버리기 전에 혹시 내가 모르는 장점이 있는지 궁금하다
암시적 형변환을 하지 말라구요 이 stoneager
플래그마다 5글자 더 치는게 너무 피곤해요...
이름이 중복이 됨?
Enum은 스코프가 네임스페이스랑 달라서 내부상수 이름이 같은게 서로 다른 Enum에 들어있으면 컴파일 오류 뜨더라 Enum Class는 이거 개선해서 중복 가능해짐
개발자의 실수를 줄이기 위해서(int로 취급하는 실수) + Namespace의 장점을 둘 다 가지려고 만든거라는 느낌을 받았음 난
휴먼에러 막는 것도 물론 중요하기는 하지만 Enum 쓰는게 매직넘버 막고 코드 가독성 좀 늘려보자고 하는건데 뭔가 간결함이 더 떨어진 것 같음 C++의 네임스페이스와 C의 간결한 Enum 사이의 불쾌한 골짜기같은 느낌임... 몬가 이상함...
형변환 하지 말라고 존재하는 거죠...
enum class를 int로 형변환할 일이 많으면 디자인이 잘못된 겁니다.
디자인이 잘못된 정도까지임? enum class 안 쓰고 C 스타일 enum 써버리면 비주얼스튜디오가 쓰지말라고 화내던데 컴파일 경고 보고서 enum class가 있는지 처음 알았음
해당 댓글은 삭제되었습니다.
그게 참... 또 int로 변환하고 싶은 경우가 있걸랑 딴데 보내거나 DB에 저장하거나.. - dc App
namespace로 해서 박아놓으면 런타임에 저놈들이 코드영억 어딘가에 박혀있는거고 enum으로 쓰면 최적화돼서 컴파일타임에 필요한놈만 쓰임 - dc App
안 그래도 이것때문에 고민 엄청 했는데 프로젝트 크기가 커지면서 코드 가독성 조금이라도 잡는게 중요해져서 포기해버렸음...
const말고 constexpr씁시다