Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

FE 코드리뷰 #15

Open
wants to merge 20 commits into
base: review
Choose a base branch
from
Open

FE 코드리뷰 #15

wants to merge 20 commits into from

Conversation

zi-gae
Copy link

@zi-gae zi-gae commented Aug 30, 2021

No description provided.

Copy link
Author

@zi-gae zi-gae left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

리뷰 내용

  • 전체적으로 컴포넌트를 한번더 나누기
  • export, naming convention 획일화
  • 배열보다는 오브젝트를 이용
  • 함수의 관심사 분리
  • 유의미한 변수명 사용

고생하셨습니다 :)

const [endDate, setEndDate] = useState(null);
const [focusedInput, setFocusedInput] = useState('startDate');

const onDatesChange = ({ startDate, endDate }) => {
Copy link
Author

@zi-gae zi-gae Aug 30, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

props의 네이밍 컨벤션과 이벤트 핸들러 네이밍룰은 리액트에서 일반적으로 다릅니다.
전자의 경우에는 on 프리픽스를 달고 후자의 경우엔 handle 프리픽스를 사용합니다. 이러한 컨벤션을 지켜주면 누구나 읽기 좋은 코드가 될거라 생각합니다 :)

참고

export default ({ personnelItems, requestToServer, personnelControlled, deleteButtonHandle }) => {
const saveButtonHandler = () => () => {
const personnel = personnelItems.reduce((payload, item) => {
const [stateValue, stateName] = [item[0], item[3]];
Copy link
Author

@zi-gae zi-gae Aug 30, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

item[0], item[1]personnelItems배열을 파악하고 있지 않으면 어떤 value를 가지는지 파악하기 어렵습니다. 유의미한 변수명을 지정해주는건 어떨까요?

};

const decreaseButtonHandler = (state, setState) => () => {
if (state === 0) return;
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

state라는 변수명 보다 number 타입을 나타낼 수 있는 변수명을 짓는건 어떨까요?

return (
<Style.PersonnelController>
{personnelItems.map((state, index) => (
<Style.PersonnelItem key={index}>
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

배열의 indexkey 값을 관리하는건 지양해야합니다. 이유는 컴포넌트의 순서가 바뀌게 되면 개발자가 의도한대로 렌더링 되지 않을 수 있기 있습니다. 순서가 바뀌지 않으면 사용할 수도 있겠지만 이는 암묵적으로 개발자가 해당 코드를 외우고 있어야하기 때문에 처음부터 유니크한 아이디로 지정해주면 좋을거 같습니다.

setState(state + 1);
};

useEffect(() => {
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

디펜던시 배열에 필요한 디펜던시를 추가해서 사용해야 개발자가 렌더링을 예측하기 쉽다고 생각하는데 어떻게 생각하세요?


// Validator
const isAdultValueLessEqualThan0 = searchOptions =>
searchOptions && searchOptions.personnel && searchOptions.personnel.adult <= 0;
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

옵셔널 체이닝을 이용하면 조금 더 깔끔하겠네요 :)

Suggested change
searchOptions && searchOptions.personnel && searchOptions.personnel.adult <= 0;
searchOptions?.personnel?.adult <= 0;

Comment on lines +28 to +31
const nights = date
? getNightValueFromDateString({ startDateString: date.checkIn, endDateString: date.checkOut })
: 0;
const guest = personnel ? personnel.adult + personnel.children : 0;
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

useMemo를 통해 값을 메모이제이션 시켜 연산을 줄이는건 어떨까요? 리소스가 많이 드는 연산은 아니지만 작은 변경점이 모여 높은 퍼포먼스를 만든다 생각합니다. :)

if (error) alert('이미 예약되어있는 숙소입니다');
}, [data, loading, error]);

const nights = date
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

마이너하지만 복수형 변수명을 봤을때 배열 타입이 들어올거 같습니당..

alert('예약이 완료됬습니다.');
dispatchSearchOption({ type: 'reset' });
}
if (loading) console.log('추가 중');
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

콘솔로그 보다 사용자가 알 수 있는 방법을 이용하는것이 좋아보입니다.

const decoded = jwt.verify(token, TOKEN_SECRET_KEY);
return decoded;
} catch (err) {
console.log(err);
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

콘솔에 찍는거보다 에러를 throw 해버리는 것도 좋은 방법일 것 같아요! (런타임에서 눈치채는 게 아니라 개발할 때 눈치챌 수 있도록)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants