실무 경험이 없어서 실습에 참가하였는데, 평론에서 엉망진창이 되었다
6714 단어 JavaScript검토
입문
이 기사WESEEK Advent Calendar 202022일째 보도입니다.
저는 2020년 7월부터 WESEEK 주식회사에서 실습하고 있는 일반대학 4학년 학생입니다.인턴은 GROWI.클라우드라는 SaaS 서비스를 개발 중입니다.
실습을 시작하기 전에는 기본적으로 혼자 공부하기 때문에 코드를 본 적이 없다.실습을 시작한 후 코드 평론에서 욕을 먹었습니다. 독학으로 얻기 어려운 지식을 얻었기 때문에 이 지식을 똑똑히 알고 싶어서 이 글을 썼습니다.
이 글에서 언어와 틀을 가리지 않고 통용적으로 실천할 수 있다는 점에 대해 초급과 초급 두 부분으로 구성된 평론을 정리하고자 합니다.코드로 설명하는 부분에 대해 저는 자바스크립트로 설명했지만 어려운 것을 쓰지 않았기 때문에 자바스크립트를 접촉한 적이 없는 사람이라도 이해할 수 있습니다.
초급
정말 막 들어갔을 때 코드를 썼는데 드디어 움직여서 코드 이전의 일을 완전히 안심하고 했다.(지금도 가끔 이렇게 해요.)
정말 막 들어갔을 때 코드를 썼는데 드디어 움직여서 코드 이전의 일을 완전히 안심하고 했다.(지금도 가끔 이렇게 해요.)
초급
읽을 수 있는 코드의 관점에서 보면 대체적으로 군더더기로 나눌 수 있는지 아니면 이해하기 어렵지 않은지 두 가지로 나눌 수 있다.처음에는 많은 댓글이 와서 힘들었지만 지금은 이해하기 쉬운 코드를 짧게 써서 기쁩니다.
여분 변수 정의
예를 들어, 다음 글쓰기는 이중화됩니다.자바스크립트를 미리 준비하는 방법을 사용하면 가독성이 높고 짧게 쓸 수 있습니다.
중복 사례const members = [{name:'kenta',age:21},{name:'naomi',age:15},{name:'shigeru',age:34}]
const adultMembers = [];
people.forEach( member => {
if ( member.age >== 20) {
adultMembers.push(member);
}
});
위의 코드는 다음과 같이 고칠 수 있다.
좋은 예.const members = [{name:'kenta',age:21},{name:'naomi',age:15},{name:'shigeru',age:34}]
const adultMembers = members.filter( => {
return member.age >== 20;
});
이렇게 하면 몇 줄의 코드를 짧게 쓸 수 있다.그리고 filter 방법을 사용하면 코드에 조건에 맞는 요소를 추출하여 이런 정보를 처리하고 가독성도 높아진다.
또한 맵과reduce를 적극적으로 사용해도 더 좋은 코드를 쓸 수 있다.나는 ForEach가 최종 수단이라고 생각한다.
SQL 및 API를 너무 많이 사용합니다.
프로젝트에서 많은 SQL 및 API를 실행합니다.SQL 쿼리를 두드릴수록 DB에 대한 문의가 많아지고 API를 두드릴수록 처리가 무거워집니다.나는 이런 처리가 가능한 한 적기를 바란다.
전제 조건
const members = [{name:'kenta',age:21},{name:'naomi',age:15},{name:'shigeru',age:34}]
const adultMembers = [];
people.forEach( member => {
if ( member.age >== 20) {
adultMembers.push(member);
}
});
const members = [{name:'kenta',age:21},{name:'naomi',age:15},{name:'shigeru',age:34}]
const adultMembers = members.filter( => {
return member.age >== 20;
});
프로세스
중복 사례
アクティブな組織を全て取ってくる(SQLクエリ一回目)
条件に合致する組織を抽出
抽出した組織のユーザを全て取得(SQLクエリ二回目)
다음 절차로 변경하여 SQL 조회 횟수를 줄일 수 있습니다.좋은 예.
組織を紐づくユーザとも含めて全て取ってくる(SQLクエリ一回目)
条件に合致する組織を抽出
抽出した組織のユーザを全て取得(SQLクエリ叩かないでmapメソッドなどで取ってこれる)
이번에는 간단한 예입니다. 아마도 당신은 SQL의 한 번이 많아도 그렇게 큰 변화가 없을 것이라고 생각할 것입니다.그러나 이런 한 번 한 번의 처리가 가벼워지는 것은 전체 항목에 큰 영향을 미칠 수 있으므로 조회 횟수를 최대한 줄여야 한다.같은 처리를 여러 번 너무 많이 썼어요.
서로 다른 파일에 같은 처리를 여러 번 썼을 때 스스로 유틸리티 폴더를 만드는 등 공통된 방법을 만들어 보자.전체 항목의 코드량이 감소하고 가독성이 높아진다.
스스로 논리를 쓰려고 노력했지만 실제로는 다른 멤버들이 유틸리티를 위해 방법을 준비해 놓은 것을 필요로 하지 않은 적이 몇 번 있었다.자기가 쓰기 전에 없어진 걸 확인해야지.
ifelse가 아니라 세 가지 연산자가 안 좋아요?
조건 브랜치 정보
중복 사례
let sentense;
if(age >== 20){
sentense = 'お酒が飲めます';
}
else{
sentense = 'お酒が飲めません';
}
ifelse의 조건 지점은 참고 연산자로 다음과 같이 쓸 수 있습니다.좋은 예.
const sentense = age >= 20 ? 'お酒が飲めます' : 'お酒が飲めません';
이렇게 한 줄만 쓰면 된다.그러나 세 가지 산자 중 세 가지 산자 같은 이른바 세 가지 산자의 끼워넣기가 되면 확실히 짧아지지만 가독성이 현저히 떨어지기 때문에 사용하지 않는 것이 좋다.나는 가독성과 이해하기 쉬운 균형을 고려하면서 코드를 쓰고 싶다.자바스크립트에서 세 가지 연산자 외에 조건을 산뜻하게 하는 방법이 많기 때문에 끊임없이 채택해야 한다.
그 중에서 논리 연산자는 비교적 많이 사용된다.
참고 자료
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Logical_Operators
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Nullish_coalescing_operator
다음 코드는 다음과 같습니다.
중복 사례
let databaseUrl
if(process.env.MONGO_URL){
databaseUrl = process.env.MONGO_URL;
}
else{
databaseUrl = 'https://databaseurl';
}
아래처럼 유창하게 쓸 수 있다.좋은 예.
const databaseUrl = process.env.MONGO_URL || 'mongodb://mongo:27017/'
언뜻 보니 datavaseUrl에 진위값이 있는 것 같지만 실제로는 프로세스입니다.env.MONGO_URL이 있으면 이 값을 되돌려줍니다. 그렇지 않으면'mongodb://mongo:27017/의 논리.편하죠!다른 거 또 &??사용으로 유창한 코드를 쓸 수 있으니 꼭 사용하세요.
조건식에 부정적인 뜻을 넣지 마라
아래와 같이 조건식에 부정을 넣으면 독자들에게 매우 이해하기 어려운 코드다.
이해하기 어려운 예
if(!flag){
console.log('条件1')
}else{
console.log('条件2')
}
아래와 같이 개작하면 가독성이 높은 코드입니다.좋은 예.
if(flag){
console.log('条件2')
}else{
console.log('条件1')
}
도저히 이해하기 어려운 기술에 대해서 댓글을 달아보도록 하겠습니다.
변수명과 방법명을 이해하기 쉽게 쓰고, 이해하기 쉬운 코드를 쓰고, 어려운 논리를 쓸 때도 어쨌든 이해하기 어렵다.그럴 때는 적극적으로 댓글을 써야 한다.안 쓰는 것보다 절대 잘 쓰는 것 같아서 (댓글을 너무 많이 써서 지적받은 적이 거의 없다) 적극적으로 코드에 남겨 두세요.
총결산
위에서 열거한 점들은 의외로 많은 평론을 받았고 제가 공부만 하면 절대 눈치채지 못할 것을 알려주었기 때문에 현장에서 문질러지는 중요성을 매일 느낄 수 있었습니다.
그리고 댓글과는 상관없지만 팀에서 무엇을 했는지, 실제로 서비스를 누가 사용했는지는 즐겁다.앞으로도 즐기면서 열심히 하고 싶어요.
※ 이 기사는이것은 2020/12/22에 투고한 보도의 전재이다.
Tips wiki는 IT 기업의 기술 정보와 프로젝트 정보를 공개했습니다.
참고 자료
Reference
이 문제에 관하여(실무 경험이 없어서 실습에 참가하였는데, 평론에서 엉망진창이 되었다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kentalpsw/items/dc6cbef73876926c4699
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(실무 경험이 없어서 실습에 참가하였는데, 평론에서 엉망진창이 되었다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kentalpsw/items/dc6cbef73876926c4699텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)