한 번 본 놀라운 빌어 먹을 코드

6311 단어 포엠CPHP자바

개요



@rana_kualu 님의 기사에서 영감을 받아,
자신이 지금까지 보았던 중에서도 야바메의 빌어 먹을 코드에 대해 써 본다.

(원문)
· 지금까지 본 중 가장 더러운 소스 코드 - Qiita
h tps:// 퀵했다. 소 m/라나_쿠아ぅ/있어 MS/2f3C40642836c11f5 DC

빌어 먹을 코드



① typedef



재현 코드.c
typedef void coid;
typedef void boid;

키보드를 보면 [c] [v] [b]가 줄 지어 있다.
즉, 이것은 타입 미스를 형명의 재정의로 커버하고 있다고 하는 것.
유석에 이것이 프로그램이 아니라고 생각했다.

② 마이너스 1만



변수명은 우선 적당.

재현 코드.php
$date0 = '20201122'; //画面からYYYYMMDDで文字列が来る
$date1 = $date0 -10000;
$year = substr($date1, 0, 4);
$month = substr($date1, 4, 2);
$day   = substr($date1, 6, 2);

뭐야 이 1만을 빼고 있는 처리는···.
(당시의) 동료가 보수중의 구조로부터 이 코드 발견해, 함께 고민했다.
날짜계 처리에서는 1만은 깨끗하다. . .
다행히 쓴 배가 옆에 있었기 때문에 직접 들어 보았다.

1년 전 계산



과연!
다시 써라!

다행히 쓴 배가 고등학교에서 친구(동급생)였기 때문에, 일단 때렸다.

날짜 조작은 날짜 조작에 대한 함수가 제대로 있기 때문에 그것을 사용합시다.
(라고 말하는지, 나는 정적형 밭의 인간이므로, 동적형 변환의 사용법에도 무릎이 떨렸다.)

③ 타코이카 파닌쿠



재현 코드.java
boolean checkNumber (str) {
  boolean isNumber = !NumberUtils.isNumber(str);
  if(isNumber) {
    //エラーメッセージ処理処理
  }
  return !isNumber;
}

츳코미커녕
  • 변수명이 분명히 거짓말을 하고 있다
  • 결국이 함수는 다시 반전됩니다.
  • 그럼 원래 반전하고 있던 이유는 무엇? ? ?

  • 논리값(진위값)이 엉망이다.

    <기재 내용을 삭제했습니다>

    논리값은 매우 혼란하기 쉽기 때문에, 취급에는 정말로 주의가 필요.
    나는 긍정적인 쪽을 참, 부정적인 쪽을 거짓이 되도록 유의하고 있다.

    ④ (추기) include의 치카라!



    @ fujitanozomu 님의 샘플 코드 을 보고 있어 어쩐지 생각해 냈으므로 추기합니다

    재현 코드.c
    int tbl[] = {
      #include <list.csv>
    };
    

    이,,, 이런 사용법. . .
    컴파일 프로세스를 이해하고 있기 때문에 그 황업! ?
    라고 생각했습니다.

    프로그래밍 언어에서 매크로 문화는 기본 악법이 되었군요.
    (일부 기능은 후발 언어로도 남아 있습니다)

    이상



    빌어 먹을 코드를 쓰지 않도록 매일 정진하고 싶습니다.

    추기① 2020/06/21(일)



    생각보다 열람수가 많아 비비하고 있습니다.
    조금 모서리가 서있는 부분은 비공개로 문제가 될 것 같기 때문에,
    일부 기재를 지웠습니다.

    추기② 2020/06/21(일)



    ④를 추가했습니다.
    무심코 기억해 버린 것으로(쓴웃음)

    추기③ 2020/06/22(일)



    @ 사쿠로 씨로부터 정보를 받았습니다.
    원래 include 될 것으로 예상되는 파일 형식이있는 것 같습니다.
    · XPM - Wikipedia
    htps : // 그럼.ぃきぺぢ아. 오 RG / 우키 / XPM
    XPM은 그 자체가 C 언어 소스 코드의 몸을 이루고있는 것 같습니다.

    좋은 웹페이지 즐겨찾기