Assert 어디에 넣을지 모르면 넌 주니어

Sdílet
Vložit
  • čas přidán 7. 09. 2024
  • Assert 만큼 최소한의 노력으로 코드를 견고하면서도 간결하게 만드는 게 없습니다. TDD 보다도 100배 낫죠. 그런데 생각보다 어디에 이걸 넣을지 모르시는 프로그래머들이 있더라구요? 당연히 자기 머리속에서 생각 정리가 잘 안 된 주니어입니다.
    아... 혹시... Assert가 뭔지도 모르신다고요? 그러면 어... 음... 정말 매우 곤란합니다...

Komentáře • 77

  • @yeyememe8120
    @yeyememe8120 Před 7 měsíci +42

    중간중간 이것도 모르면 주니어니까 돌아가라고 말해놓고
    결국은 Assert에 대해 설명해주시는 스윗함이 돋보이십니다.

  • @DonghoPark
    @DonghoPark Před 7 měsíci +8

    관련 없는 내용일수도 있지만... 하드웨어 설계(프론트엔드 칩설계, RTL이라 부르는...) 분야에서도 assertion 을 많이 사용합니다!
    프로토콜이나 하드웨어의 스펙을 assert로 기술하고(하드웨어 구현 x, 소프트웨적 표현), 하드웨어를 구현하는거죠. 그러면 이후 시뮬레이션 단계에서 하드웨어 버그를 잡아 낼 수 있습니다.
    최근에는 시뮬레이터 만이 아니라 assert를 합성기(hdl 코드를 하드웨어로 번역해주는 하드웨어 컴파일러)에서 하드웨어로 번역해주기도 해서 에뮬레이션(fpga 등등) 단계에서 assert를 활용하기도 하더군요 ㄷㄷ

  • @eo1120
    @eo1120 Před 7 měsíci +7

    assert 는 디버깅할 때도 가정하는 경우의 수를 줄일 수 있어서 상당히 유용합니다. 단 릴리즈에서 무시하는 것이 좀 별로라서 로그라도 남길 수 있게 바꿔서 쓰면 더 좋습니다. 그리고 컴파일 타임 assert (c++ 의 경우 static_assert) 도 아주 좋습니다.

  • @user-hk2fv5xs5l
    @user-hk2fv5xs5l Před 7 měsíci +23

    예전 회사에서 foo(A* a) { assert(a != nullptr) } 대충 이런 함수에 크래시가 났는데 assert 지우고 if (a == null) { return } 이렇게 바꿔놓고 버그 고쳤다고 하는 사람도 있었답니다.

  • @taekkim2
    @taekkim2 Před 7 měsíci +8

    마틴 파울러였던가, 어느 외국 블로그에서 예외 처리하는 방법에 exception과 assert가 있다고 봤었던 기억이 있네요. 하지만 경험상으론 assert 존재나 필요성을 얘기하는 개발자는 거의 못 본 것 같습니다. 저도 가끔 쓰긴하는데, 뭔가 쓰자고 설득하기도 그렇고 해서 잘 안쓰게 되었네요 ㅎㅎ 좋은 영상 감사합니다.

    • @user-jq5cj2bt7k
      @user-jq5cj2bt7k Před 7 měsíci

      그러면 그냥 exception 으로만 처리하는 걸까요??

    • @taekkim2
      @taekkim2 Před 7 měsíci

      @@user-jq5cj2bt7k 용도에 맞게 둘 다 활용해야죠.

  • @user-df1nj6ff1v
    @user-df1nj6ff1v Před 7 měsíci +4

    포프형님 영상
    정말 잘 보고 있습니다~
    개발과는 상관없는 삶을 살고 있지만 영상을 통해 삶에 도움이 되는 조언들을 얻고 있습니다 ㅎㅎ
    무엇보다 재밋어요
    영상 계속 올려주세요~

  • @user-br8cn8sk3y
    @user-br8cn8sk3y Před 7 měsíci +6

    생각 정리가 잘 안되는 1인으로서, 포프님만의 생각정리? 하는 노하우 관련 영상도 부탁드리겠습니다. 연차가 쌓였으나 테스트를 등한시 했던 사람으로서...........

  • @user-gy9hn2un2b
    @user-gy9hn2un2b Před 7 měsíci +2

    서당개 3년이면 풍월을 읊는다는 옛말이 요즘 많이 와닿습니다
    알림설정해놓고 뜨는거 하나씩만 봐도 견문이 넓어지네요

  • @user-it1cj5gy7m
    @user-it1cj5gy7m Před 7 měsíci +1

    궁금한게 있는데요
    이런 지식은 어떻게 줍줍할 수 있나요?
    이렇게 지식을 공유해주시는걸로 평소에 줍줍하긴 하지만 평소에 알아서 잘 좀 하고 싶은데...
    방법을 잘 모르겠더라구요 ㅜㅜ
    항상 감사합니다

  • @user-pg9ih2bu1y
    @user-pg9ih2bu1y Před 7 měsíci +1

    최근에 포프님 추천으로 코드 컴플리트를 읽고 있는데 assert에 대한 내용이 있던게 기억나네요. 새 프로젝트에 기능을 빠르게 추가하는데 assert만한게 없는거 같습니다. 새로운 기능을 만들 때 그 함수 안의 기능 자체보다도 precondition이나 입력 값에 실수가 나는걸 많이 경험합니다.

  • @user-le6it9ys2n
    @user-le6it9ys2n Před 5 měsíci

    항상 재미있고 유익한 영상 감사합니다! 좋아요 누르고 갑니다!

  • @user-of3rb1jv4l
    @user-of3rb1jv4l Před 7 měsíci

    좋은 말씀 감사합니다! 혹시나해서 찾아보니 유니티에도 어설트기능을 제공하네요! 항상 조건문으로 체크해왔는데 당장 바꿔야겠어요 👍

  • @doltoBlorin
    @doltoBlorin Před 4 měsíci

    러스트 코드 짜면서 맨날보는 예제에 밑줄에 나오는게 다 어설트 코드였군요
    그걸 보면서 공부하면서 어설트가 뭔지 몰랐던 주니어는 웁니다😂

  • @user-rm4dg6wh5q
    @user-rm4dg6wh5q Před 7 měsíci

    항상 개발자에 대한 객관적 지표를 제시하려고 노력하는게 멋지십니다 ! 포프님은 두가지이상의 분야(모호하지만 개발자와 수학자 혹은 물리학자 혹은 경제전문가 혹은 법률전문가 등)에서 전문가라고 판단된 분을 본적있으신가요 ?

  • @user-gchgctv
    @user-gchgctv Před 7 měsíci +4

    후렴처럼 끝나는 '넌 주니어'

  • @user-jb5vr9xz2v
    @user-jb5vr9xz2v Před 3 měsíci

    생산 자동화분야 엔지니어로 가닥은
    잡았는데…공부 열심히 하겠습니다😂

  • @user-nv9zj8wx9v
    @user-nv9zj8wx9v Před 7 měsíci +1

    asset를 사용해야하는 구체적인 상황에 대해 더 자세히 알아보고 싶어서, java assert 나 유사한 키워드로 검색하니, junit 테스트코드에서 사용하는 assertion이나 실제 사용하는 상황보다는 assert 함수 자체에 대한 설명만 나와 이렇게 질문드리게 되었습니다. 제가 고민해본 결과로는 Controller에서 값을 받아 Service 에서 사용하는 경우와 같이 상위 함수에서 Excpetion 처리가 반드시 되어와야 하지만, 되지 못하였을 경우를 대비하여 assert를 사용해야 하는 것 같다고 느꼈는데, 이런 경우에 사용하면 되는 걸까요?

    • @포프티비
      @포프티비  Před 7 měsíci +9

      그것도 좋은 경우고요. 코드 작성자가 생각하는 모든 가정을 어서트로 넣는 겁니다. 예를 들면 어떤 수를 짝수로 바꾼뒤에는 그게 짝수인지 assert를 넣어도 되고요. 스트링에서 첫 단어 자르기 연산을 한뒤 새 스트링이 대문자로 시작하는지 assert를 넣어도 되고요. For문을 돌고 난 뒤에 색인이 특정 값인지 어서트를 넣어도 됩니다.
      비유를 들면 라면 끓이는 매뉴얼 따라할때 물이 끓어 라면을 넣고 3분 기다릴때 그 동안 계속 가스불이 켜있다고 가정을 하잖아요? 이럴때 가스불이 꺼지지 않았다는 assert를 넣는 겁니다. :)

  • @zero_to_full
    @zero_to_full Před 7 měsíci +1

    영상을 볼 때마다 아마 기회는 없겠지만 같이 일해보고 싶네요 ㅎㅎ

  • @user-bt2vb4xg2s
    @user-bt2vb4xg2s Před 7 měsíci +2

    그럼 참고 할만한 assert 활용 오픈 소스 코드 링크를 게시해 주실 수 있으실까요 ?

  • @user-lk8qm6zj9i
    @user-lk8qm6zj9i Před 7 měsíci +1

    전 앱개발하고 있는데 assert로 확인해서 처리하는게 크래시 고사지내는것보다 훨씬 낫다고 생각합니다.

  • @user-no1oe2rg1v
    @user-no1oe2rg1v Před 7 měsíci +1

    난 아직 주니어였다 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
    내일부터당장써봐야겠네요.

  • @user-vj3on9bj9z
    @user-vj3on9bj9z Před 5 měsíci +1

    저는 assert넣을 부분에도 exception을 썼습니다. 왜냐면.. 나란 녀석이 Debug에서 잘 걸렀다고 Release에서 똑바로 거를까?? 이기 때문입니다.

    • @포프티비
      @포프티비  Před 5 měsíci +1

      사실 둘의 용도는 매우 다릅니다.

    • @user-vj3on9bj9z
      @user-vj3on9bj9z Před 5 měsíci

      @@포프티비 덕분에 말씀하신 용도에 잘 쓰고 있습니다 감사합니다

  • @user-ee6sh6oj7g
    @user-ee6sh6oj7g Před 7 měsíci

    안녕하세요 포프형님 웹 백엔드개발 3년차입니다 게임서버로 전향하는게 현실적으로 가능한지 혹은 이전 경력은 인정받을수있을까요?? 다음학기 포큐아카데미 씨샵부터 수강예정입니다ㅜ

    • @포프티비
      @포프티비  Před 7 měsíci

      실제 전향하신 분들이 있으니 현실적으로 가능은 합니다. (사실 이런 질문들에 대답은 다 '가능합니다'죠)
      이전 경력은 인정받을수도 아닐수도 있습니다. 웹 백엔드라는 직군 아래서 하는 일들이 너무 다양하니까요.
      기술적으로 난이도가 있는 일들을 해왔다면 어디 가든 거의 인정받습니다.

  • @iankang1246
    @iankang1246 Před 7 měsíci

    가정 설정문...! 이걸 왜 이제 알았을까요...! 꼭 써보겠습니다!

  • @georgestokes4728
    @georgestokes4728 Před 7 měsíci

    유닛테스트나 어설트나... 내가 넣는 건데 그때 생각 못한걸 나중에는 생각할수 있을까?

  • @DotoriHunter
    @DotoriHunter Před 6 měsíci

    좋은 영상 감사합니다. 근데 힐링이 아니고 펙폭 티비같습니다 ㅜㅋㅋ

  • @chickennoir691
    @chickennoir691 Před 7 měsíci

    내용 너무 흥미롭네요

  • @meinlet5103
    @meinlet5103 Před 7 měsíci +2

    1:25 그냥 우리회사코드

  • @MerlinBi
    @MerlinBi Před 7 měsíci +1

    예전 회사가 생각나네요. 디버그모드로 실행만하면 assert에 걸려서 계속 창띄워서 일을 도저히 진행할수가없어 그냥 릴리즈 모드로만 개발하던 곳이었는데 그걸 방치해놓으면서 게임 출시까지 하고 서비스까지 하고있다니... 지금 생각해도 어질어질합니다.

    • @포프티비
      @포프티비  Před 6 měsíci

      저도 그런 회사 본적 있죠. 최적화가 가장 어려웠던 프로젝트기도 해요. 아마 정리정돈 하며 개발을 하지 않아서 그 두 문제가 동시에 터진게 아닐까 생각이 드네요

  • @user-mz2jk5xf5j
    @user-mz2jk5xf5j Před 7 měsíci

    파이썬은 이상한게 try catch 를 쓰게끔 라이브러리가 되어있더군요 허락구하는거 보다 용서구하는게 쉽다는 철학이라나 뭐라나...
    아 다시보니 파이썬은 특정플래그를 넣지않으면 릴리즈모드에서도 assert 를 실행하네요
    디버그모드에서만 assert 를 실행하게 바뀌어야할텐데... 이런 이상한 언어...

  • @Boy-qp7hw
    @Boy-qp7hw Před 7 měsíci

    czcams.com/video/k0qmkQGqpM8/video.html
    0:35초부터 말씀하실때 이 영상이 생각났네요
    TempleOS를 개발하신 Terry Davis라는 분입니다
    "An Idiot admires complexity, a Genuis admires simplicity"
    근데 저는 간단하게 적고싶어도 못하고 있으니까 주니어입니다 ㅎㅎ ㅋㅋ ㅈㅅ;;

  • @jangseokhan1984
    @jangseokhan1984 Před 7 měsíci

    1:12 이거 모르면 주니어도 아니라 봐도 되지 않을까요...???

  • @꿀벌아빠
    @꿀벌아빠 Před 7 měsíci

    assert를 많이 박으려고 하는데 로직 7줄:assert 1줄 비율은 절대 못 따라가겠더라구여..
    나는 아직 멍10주니어..

  • @dddo6216
    @dddo6216 Před 5 měsíci

    if문으로 전부 return시켰었는데 안좋은 방식인가보네요. ㅜ

  • @user-jq5cj2bt7k
    @user-jq5cj2bt7k Před 7 měsíci +2

    저는 주니어입니다 ㅠ..

  • @taehyunjo1265
    @taehyunjo1265 Před 7 měsíci +1

    100% 동의하는데, 오히려 왜 영상 시작에 논란의 여지가 있을 수 있다고 말씀하신지 궁금하네요.

    • @jahyukshin4239
      @jahyukshin4239 Před 7 měsíci +1

      assert 자체를 안쓰는 사람들이 많아서 그런거 아닐까요? 주로 웹 진영에서요

    • @user-hk2fv5xs5l
      @user-hk2fv5xs5l Před 7 měsíci

      assert를 쓰는 사람이 저 뿐인데 탈출해여할까요? ㅠㅠ

  • @user-nw5fc5lm2h
    @user-nw5fc5lm2h Před 6 měsíci

    아 나 주니어네, 분발해야겠네요

  • @88_byeol_byeol
    @88_byeol_byeol Před 7 měsíci

    OrNull 같이 규칙에 있는 건 안 넣었는데 넣어야했다니 ㅠ

    • @포프티비
      @포프티비  Před 7 měsíci +1

      당연한 규칙들을 assert로 넣어두면 나중에 댕청한 실수를 하는 걸 빨리 잡을 수 있어 좋더라구요.

  • @Null214
    @Null214 Před 7 měsíci +2

    혹시 assert를 남용하는 경우도 있나요?

    • @포프티비
      @포프티비  Před 7 měsíci +3

      Assert의 불리언 표현식에 로직을 넣은 경우? 릴리즈 버전에서는 그 로직이 사라져서 버그가 됩니다

    • @user-eh4pm7bb6o
      @user-eh4pm7bb6o Před 7 měsíci

      ​@@포프티비 아?? ㄷㄷㄷㄷㄷ 그러겠네요 ㄷㄷㄷㄷ ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

    • @user-kq8cd2oo6t
      @user-kq8cd2oo6t Před 7 měsíci +1

      ​@@포프티비 와 상상도 못했네요 로직을 넣는다는 발상은 ㅋㅋㅋㅋㅋ

    • @user-hk2fv5xs5l
      @user-hk2fv5xs5l Před 7 měsíci

      제가 회사 갓 입사했을 때 이렇게 버그 만들었어요. 함수 리턴하는게 항상 true 여야해서 assert 안에서 함수호출했죠.
      그래서 릴리즈에서만 이상하게 동작했던 경험이….

    • @Null214
      @Null214 Před 7 měsíci

      와..ㅋㅋ 그런 행동하는 것만 아니라면 assert는 어느정도 맘편히 쓸 수 있겠군요

  • @cogidtjr
    @cogidtjr Před 6 měsíci

    제목이 매콤하긴 하네요

    • @포프티비
      @포프티비  Před 6 měsíci

      한국인은 매운맛을 좋아한다고....

  • @gubsingyo3
    @gubsingyo3 Před 7 měsíci

    어떤 사람이 assert는 bp 찍는 용도다 라고 하시는데
    그사람 주니어인가요?

    • @ohyes5882
      @ohyes5882 Před 7 měsíci

      ㅇㄷ

    • @jahyukshin4239
      @jahyukshin4239 Před 7 měsíci +1

      어... 크게 보면 맞는 말 아닌가요? assert로 프로그램이 뻑났다는거는 결국 assert를 박은 함수에 문제가 있거나, 전달 받은 값들에 문제가 있다는건데, 이를 고치려면 결국 디버그 브레이크 찍고 디버깅 하는 방법 밖에 없으니까요. assert는 결국 디버깅을 더 잘 할 수 있게 만들어 주는 도구일 뿐이라 생각해요.

    • @포프티비
      @포프티비  Před 7 měsíci

      어떤 조건에 실패할 경우 bp찍는거다란 의미면 맞는 이야기고. 그 조건이 없다면 틀린 이야기..
      근데 실무에서는 어서트 나면 더이상 진행 안되게 강제 크래시를 만드는 회사도 있습니다.

  • @jahyukshin4239
    @jahyukshin4239 Před 7 měsíci

    c++에서 assert 말고 __debugbreak를 쓰는 것에 대해서는 어떻게 생각하시나요?

    • @포프티비
      @포프티비  Před 7 měsíci +1

      디버그 모드에서 조건 건사후 실패할때 _debugbreak 걸도록 어서트 매크로를 만드는 거 말씀이신가요? 실무에선 대부분 그렇게 해요. 콜 스택이 딱 실패한 코드에서 멈춰있도록 하기위해

    • @user-hk2fv5xs5l
      @user-hk2fv5xs5l Před 7 měsíci

      assert(false) 와 차이가 있나요?

    • @yonggyulee
      @yonggyulee Před 6 měsíci

      assert는 표준이고 debugbreak는 아닙니다

    • @포프티비
      @포프티비  Před 5 měsíci

      콜스택 위치 차이

  • @멜론맛케익
    @멜론맛케익 Před 7 měsíci

    디버깅 시간을 어설트쓰는 시간으로 땡겨쓰자

  • @theflow5341
    @theflow5341 Před 7 měsíci

    오.. 이런 방법이 있었구먼