해커랭크가 나쁜 코드를 가르쳐줬어요.
9083 단어 javascriptbeginners
function Rectangle(a, b) {
}
이것은 그들이 너에게 10일간의 자바스크립트를 위해 작성할 함수를 요구하는 출발점이다.사각형 객체를 작성한 날은 10일 동안 day 4일입니다.대부분의 인코딩자들은 이 시작점을 그대로 유지하고 괄호 사이의 빈칸을 채운다.이것은 아마도 HackerRank이 당신이 그들의 문제를 해결하기를 바라는 방법일 것이다. 그들이 당신에게 준 출발점을 원상태로 유지하고 부족한 부분을 메우도록 하는 것이다.만약 이것이 그들이 너에게 준 전부라면, 너는
a
이 직사각형의 한쪽이고, b
이 직사각형의 다른 한쪽이라는 것을 발견할 수 있을 것이다.만약 당신이 문제 설명을 읽었다면, 그들은 a
은 직사각형의 길이이고, b
은 너비라고 명확하게 알려줄 것이다.왜 비밀로 해?
배트맨은 자신의 신분에 대해 비밀을 지켜야 한다.그는 밤마다 법을 어긴다.설령 그가 이렇게 하는 것이 좋다고 해도 그는 여전히 체포될 가능성이 있다.그는 거리에서 치안 사법을 계속 집행하기 위해 그가 실제로 브루스 웨인이라는 것을 누구에게도 알려서는 안 된다.
그러나 내가 알기로는
a
과 b
은 그들의 정체(사각형의 길이와 너비)를 숨길 필요가 없다.사실 그들이 이 함수에서 해야 할 일은 직사각형의 길이와 너비이다.a
과 b
이 필요없다는 뜻이다.Javascript는 이름 길이와 너비를 유지하지 않습니다.그렇다면 왜 직언하지 않는가?왜 길이는
length
, 너비는 width
이 안 됩니까?네, 그런데 무슨 해가 있습니까?
이 HackerRank 연습에서 너는 최대 몇 줄의 코드를 써야 한다.직사각형과 길이와 너비의 두 논리적 인자를 만드는 것은 말할 것도 없다.너는 아마 a와 b가 무엇인지 영원히 잊지 못할 것이다.그래도 한순간은
a
과 b
이 뭔지 몰라요.이것은 심지어 너를 매우 멋있게 느끼게 할 수도 있다.비밀번호가 있는 재미있는 클럽의 일원처럼참외는
a
과 b
을 보고 손을 공중으로 든다. 그러나 너는......몇 분의 1초 안에 그것을 해독할 수 있다.그것은 초강대국처럼 느껴진다.만약 해커랭크가 이렇게 한다면, 그것은 틀림없이 정확한 방식일 것이다.... 그렇지!😰직장 생활에서, 너는 이렇게 짧고, 이렇게 적게 만든 프로그램을 영원히 쓰지 않을 것이다.사각형 함수 중 a와 b가 무엇인지 순간적으로 기억해 보세요.지금 그것을 매개 변수의 의미가 명확하지 않은 환경에 두어라.아마도 페이지에 경고를 표시하는 기능이 있을 것이다.그것은 세 가지 매개 변수가 필요하다. 그것이 바로
a
, b
, c
이다.이 매개 변수가 뭔지 아세요?네, 저도요.현재, 이 새로운 이름 문제를 10000줄 코드를 포함하는 프로그램으로 확장합니다.모든 함수에는 신비로운 알파벳 이름을 가진 매개 변수가 있다.기왕 네가 이것이 가능하다는 것을 알았으니, 너의 변수도 심사숙고한 명칭을 거치지 않았을 것이다.너는 이 프로그램에 대부분의 시간을 들일 것이다. 단지 그것의 기능을 똑똑히 알고 싶을 뿐이다.나는 다른 사람들을 매우 동정한다. 그들은 반드시 이 프로그램을 들고 일을 해야 한다.나는 그들이 충분한 아스피린이 있기를 바란다.
너는 내가 HackerRank에서 유일한 예를 선택했다고 생각할 수도 있고, 최악의 예일 수도 있다.그럼 큰 실수야, 큰 실수.모든 연습에서 이런 불투명한 변수와 파라미터를 사용해서 이름을 짓는 것은 아니지만, 많은 것들이 사용되고, 어떤 것은 심지어 나의 첫 번째 예보다 더 나쁘다.다음은 이해할 수 없는 또 다른 연습의 시작 코드입니다.
'use strict';
process.stdin.resume();
process.stdin.setEncoding('utf-8');
let inputString = '';
let currentLine = 0;
process.stdin.on('data', inputStdin => {
inputString += inputStdin;
});
process.stdin.on('end', _ => {
inputString = inputString.replace(/\s*$/, '')
.split('\n')
.map(str => str.replace(/\s*$/, ''));
main();
});
function readLine() {
return inputString[currentLine++];
}
// Complete the minimumBribes function below.
function minimumBribes(q) {
}
function main() {
const t = parseInt(readLine(), 10);
for (let tItr = 0; tItr < t; tItr++) {
const n = parseInt(readLine(), 10);
const q = readLine().split(' ').map(qTemp => parseInt(qTemp, 10));
minimumBribes(q);
}
}
주 함수의 변수 이름이 나를 어지럽게 했다.t
? tItr
? n
? q
? qTemp
? 왜 이런 연습들은 더욱 가독성을 갖추지 못합니까?안녕하세요.나는 너 같은 사람들이 그들의 인터넷 개발 사업을 시작하는 것을 도왔다.우선 목표를 하나 정해야 한다.my free course으로 시작합니다!🎉
코드는 인류를 위해 쓴 것이다
너는 코드가 컴퓨터에 쓰인다고 생각할 수도 있다.아니야.코드는 인류를 위해 쓴 것이다.만약 그것이 컴퓨터에만 사용된다면, 우리는 자바스크립트나 파이톤과 같은 고급 언어를 필요로 하지 않을 것이다.
코드를 작성할 때 이 점을 명심해야 한다.네가 아니라 다른 사람이 읽도록 써라.변수, 매개 변수, 함수명은 가능한 한 많은 상하문을 봉하여 독자들이 읽고 있는 내용을 이해하도록 도와야 한다.
a
안 좋아요.length
좋아요.lengthInInches
이 더 좋습니다(실제로 측정 단위가 인치일 경우).코드가 변경되면, 현재 대표하는 내용을 반영하기 위해 이름을 업데이트해야 합니다.HackerRank를 보는 것은 매우 쉽다. 왜냐하면 그들은 방대하고 성숙한 사이트이기 때문이다. 만약 그들을 통해 진행된 인터뷰 수량이 하나의 지표라면 존경받는 사이트들은 좋은 코드로 당신의 일을 시작했다고 생각할 것이다.불행히도 사실은 그렇지 않다.
만약 당신이 HackerRank에서 연습을 한다면, 무서운, 무의미한 이름들을 재구성하는 것부터 연습해서 코드를 읽는 데 필요한 의미와 상하문을 전달하도록 하세요.플랫폼 밖의 프로젝트에서 일할 때, 그들의 나쁜 습관이 당신의 코드를 해치지 않도록 확보하고, 이해하기 어려운 코드를 작성하는 개발자의 명예를 준다.
당신의 뒤에 있는 다음 개발자를 위해 코드를 작성함으로써 다른 개발자들이 당신과 쉽게 합작할 수 있을 뿐만 아니라, 당신의 고객을 다시 고용할 수 있을 뿐만 아니라, 당신의 도움을 필요로 하는 다른 회사에 당신을 추천할 수도 있습니다.
Reference
이 문제에 관하여(해커랭크가 나쁜 코드를 가르쳐줬어요.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/raddevon/hackerrank-is-teaching-you-to-write-terrible-code-3f1j텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)