현재 mac과 linux 를 사용하고 있습니다. 최근에서 linux 운영체계를 더 자주사용하고 있습니다. 사용하면서 blog 글을 linux 에서 작성해서 mac과 공유하는 문제가 발생했습니다.
저는 Mac에서 ㅣObsidian 을 사용해서 google drive 와 파일싱크를 통해서 저장하고 있었습니다. 그런데, linux에서는 공식적으로 지원하는 google drive앱이 없기 때문에, 3rd party앱으로 이를 해결해야 합니다.

여러가지 앱을 사용해 봤지만, 현재는 rclone 을 사용해서 해결하고 있습니다.
우선 rclone config 명령어를 통해서 웹하드를 연결해야 합니다. (구글드라이브 연결도 간단함)

rclone 을 통해서 드라이버 연결

현재는 GOOGLE DRIVE 와 DROPBOX가 연결 해놓은 상태입니다. NEW를 통해서 새로운 웹하드에 연결을 할 수 있습니다.
rclone v1.61.1 에서 지원하는 목록입니다.

$ rclone config
Current remotes:

Name                 Type
====                 ====
dropbox              dropbox
gDrive               drive

e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q> n

Enter name for new remote.
name> d

Option Storage.
Type of storage to configure.
Choose a number from below, or type in your own value.
 1 / 1Fichier
   \ (fichier)
 2 / Akamai NetStorage
   \ (netstorage)
 3 / Alias for an existing remote
   \ (alias)
 4 / Amazon Drive
   \ (amazon cloud drive)
 5 / Amazon S3 Compliant Storage Providers including AWS, Alibaba, Ceph, China Mobile, Cloudflare, ArvanCloud, DigitalOcean, Dreamhost, Huawei OBS, IBM COS, IDrive e2, IONOS Cloud, Liara, Lyve Cloud, Minio, Netease, RackCorp, Scaleway, SeaweedFS, StackPath, Storj, Tencent COS, Qiniu and Wasabi
   \ (s3)
 6 / Backblaze B2
   \ (b2)
 7 / Better checksums for other remotes
   \ (hasher)
 8 / Box
   \ (box)
 9 / Cache a remote
   \ (cache)
10 / Citrix Sharefile
   \ (sharefile)
11 / Combine several remotes into one
   \ (combine)
12 / Compress a remote
   \ (compress)
13 / Dropbox
   \ (dropbox)
14 / Encrypt/Decrypt a remote
   \ (crypt)
15 / Enterprise File Fabric
   \ (filefabric)
16 / FTP
   \ (ftp)
17 / Google Cloud Storage (this is not Google Drive)
   \ (google cloud storage)
18 / Google Drive
   \ (drive)
19 / Google Photos
   \ (google photos)
20 / HTTP
   \ (http)
21 / Hadoop distributed file system
   \ (hdfs)
22 / HiDrive
   \ (hidrive)
23 / In memory object storage system.
   \ (memory)
24 / Internet Archive
   \ (internetarchive)
25 / Jottacloud
   \ (jottacloud)
26 / Koofr, Digi Storage and other Koofr-compatible storage providers
   \ (koofr)
27 / Local Disk
   \ (local)
28 / Mail.ru Cloud
   \ (mailru)
29 / Mega
   \ (mega)
30 / Microsoft Azure Blob Storage
   \ (azureblob)
31 / Microsoft OneDrive
   \ (onedrive)
32 / OpenDrive
   \ (opendrive)
33 / OpenStack Swift (Rackspace Cloud Files, Memset Memstore, OVH)
   \ (swift)
34 / Oracle Cloud Infrastructure Object Storage
   \ (oracleobjectstorage)
35 / Pcloud
   \ (pcloud)
36 / Put.io
   \ (putio)
37 / QingCloud Object Storage
   \ (qingstor)
38 / SMB / CIFS
   \ (smb)
39 / SSH/SFTP
   \ (sftp)
40 / Sia Decentralized Cloud
   \ (sia)
41 / Storj Decentralized Cloud Storage
   \ (storj)
42 / Sugarsync
   \ (sugarsync)
43 / Transparently chunk/split large files
   \ (chunker)
44 / Union merges the contents of several upstream fs
   \ (union)
45 / Uptobox
   \ (uptobox)
46 / WebDAV
   \ (webdav)
47 / Yandex Disk
   \ (yandex)
48 / Zoho
   \ (zoho)
49 / premiumize.me
   \ (premiumizeme)
50 / seafile
   \ (seafile)
Storage> ^C⏎             

웹하드를 등록하는 부분은 간단한 부분이어서 따로 설명은 안 하려고합니다.

sync 하기

웹드라이브에서 파일과 LOCAL의 폴더를 동기화하고 싶을 때 사용합니다. 필요한 경우 파일 삭제를 포함하여 소스와 일치하도록 대상을 업데이트 합니다.

동기화시 삭제가 포함되므로 데이터 손실을 방지하기 위해 항상 --dry-run 또는 --interactive/-i 프랠그를 사용하여 동기하 작업을 먼저 테스트 하는 것이 좋습니다.

`-i`: interactive 모드를 사용하면 파일이 강제적으로 수정되는 것을 막고, 확인하면서 동기화할 수 있습니다.

파일을 원본에서 복사할 곳을 잘 설정하는 것이 중요합니다
$ rclone sync -i [원본 폴더] [목적지]

# google drive -----> local
$ mkdir -p ~/gdrive/[폴더명]
$ rclone sync -i mygdrive:/[폴더명] ~/gdrive/[폴더명]

# local ------> google drive
$ rclone sync -i ~/gdrive/[폴더명] mygdrive:/[폴더명]
  • --bwlimit=8.5M: 대역폭 속도를 8.5M으로 제한하여 Google에 부과하는 일일 최대업로드 한도에 도달하지 못하도록 합니다.
  • --progress: 복제/동기화 중인 파일이 완료될 때까지 남은 시간, 복제/동기화가 전송되는 속도를 보여주는 출력 합니다.

파일 조회하기

동기화 하기 전에 해당 웹하드에 어떤파일이 들어있는지 명령어를 통해서 조회 할수 있습니다. 굳이 웹을 통해서 조회하지 않아도 바로 조회할 수 있어 편합니다.

$ rclone ls mygdrive:
$ rclone lsd mygdrive:

mount 하기

저는 실시간으로 파일을 동기화해서 사용하고 싶기 때문에 위와 같이 파일을 sync 하는 것과는 다릅니다.

$ rclone mount gDrive:source_folder target_folder --allow-other --cache-db-purge --fast-list --poll-interval 10m

systemd 구성으로 자동 mount 하기

매번 명령어를 실행해서 동작하는 것을 systemd에 등록해서 자동 mount 하려고 합니다.

/etc/systemd/system/gdrive.service 파일을 생성합니다.

[Unit]
Description=rclone for gdrive_mount
AssertPathIsDirectory=/home/leaf/target_folder
After=networking.service

[Service]
Type=simple
ExecStart=rclone mount --config=/home/leaf/.config/rclone/rclone.conf gdrive_source_folder: /home/leaf/target_folder --allow-other --cache-db-purge --fast-list --poll-interval 10m
ExecStop=/bin/fusermount -u /home/leaf/target_folder
Restart=always
RestartSec=10

[Install]
WantedBy=default.target
$ systemctl enable gdrive.service
$ systemctl start gdrive.service
반응형

현재 리눅스에서 지원하는 키보드 세팅 확인

$ grep -E "(ctrl|caps)" /usr/share/X11/xkb/rule/base.lst
$ setxkbmap -option ctrl:swapcaps

참조: https://wiki.archlinux.org/title/xmodmap

The following example modifies CapsLock to Control, and Shift+CapsLock to CapsLock:

  • CapsLock -> Control
  • Shif t+ CapsLoc ->: CapsLock

~/.Xmodmap 파일수정

clear lock
clear control
add control = Caps_Lock Control_L Control_R
keycode 66 = Control_L Caps_Lock NoSymbol NoSymbol
반응형

created: <% tp.file.creation_date() %>
tag: #독서
title: 장사의신
author:
category: [사업,요식업]
publish_date:
cover_url: https://contents.kyobobook.co.kr/sih/fit-in/458x0/pdt/9788934985068.jpg
status:
start_read_date:
finish_read_date:
my_rate:
book_note:


<% tp.file.title %>

자신의 가게에서 일하는 알바생들을 졸업시키는 일을 하고 있다. [우노 타케시]는 라쿠코페레이션이라는 기업을 운영하면서 여러가지 특색을 가진 음식점을 운영하고 있다. 특이한 점은 여기에서 일하는 사람을 성장, 독립시켜 다른 요식업의 사장들을 배출하고 있다는 점이다.
사람은 자신이 가지고 있는 기술, 경험을 남에게 가르켜주려고 하지않는다. 생계수단이 이 기술에서 비롯되기 때문이다. 그렇기 때문에 다른 사람에 기술을 전수하지 않음으로 해서 자신의 위치를 유지할 수 있다. 경험에서 얻어지는 지혜와 지식은 돈으로 살수 없는 가치를 지니고 있다. 이 것을 아무런 조건없이 다른사람에게 전달한다는 것은 큰 배포에서 오는 것이 아닐까.
우노 타케시는 떠오른 경험을 여과없이 자식들(직원들)에게 전수하고, 떠오르는 상품에 관한 아이디어를 공유한다. 이 아이디어로 새로운 메뉴를 그대로 사용하는 이도 있고, 이를 더 발전시켜서 적용시키는 사람도 있다.

아이디어를 생각나게 하는 경험

여기서 중요한 점은 그의 생각은 꾸준히 새로운 것을 떠올린 다른 점이다. 다양한 아이디어를 떠오르게 하는 기반이 무엇일까 생각해 보면, 고객과의 대화였다. 한번 더 대화하기 위한 접객에 방법에 대한 고민은 다양한 생각의 끈으로 이뤄졌다.
물건을 하나 팔려고 해도 고객과의 대화가 반드시 이뤄진다. 자연스럽게 대화하기 위한 계기를 만들어가는 방법이 아이디어를 만들어 주었고, 지속적인 발전을 만들어 주었다.

미래를 보여줄 수 있는 본보기

성공을 할 수 있다는 본보기를 보여주는 것은 큰 설득력이 된다. 캐나다에 있는 집. 별장. 이런 것들은 직원들로 하여금 얼마나 성장할 수 있는지에 대한 큰 결심, 마음을 만들어 준다.
솔선수범도 해야 한다. 점장이 되고 난 뒤에 청소, 장보기, 접객... 은 직원들로 하여금 따라올 수 있는 믿음있는 선배가 된다.

기억하는 차트

  1. 제대로 된 가게를 보고 다녀라.
  2. 아이디어는 바로 실행할 수 없으면 의미가 없다.
  3. 돈이 필요 없는 아이디어 수집법
  4. 인적이 드문 곳에 가게를 열어라.
  5. 평범한 메뉴를 특별하게 만드는 방법
  6. 불황에 강한, 알기쉬운 간판 메뉴
  7. 손님을 기쁘게 하는 방법
  8. 키노시타 토키치로의 “짚신 이야기”

종평

책은 개인사업, 특히 요식업을 하는 사람들에게 필요한 내용들을 담고 있다. 하지만, 일반 생활에서도 충분히 적용할 수 있는 아이디어들이 있고, 사람들을 대하는 사고의 방식은 충분히 배울 가치가 있다.

반응형

최근에 사회 심리학에 대한 관심이 높아졌습니다. 간이 나면 YOUTUBE 를 통해서 공부했고, 현재 자신에 대해 정리하고, 삶에 적용하려고 하고 있습니다. 책을 읽고 난 지금은 생각나지 않지만, 읽어야 하는 책으로 소개가 된 것을 보고, 제목이 마음이 동하여 읽게 되었습니다.

처음 몇장을 읽고 몇가지 인상적인 느낌이 있습니다. 한자표기가 되어 있는 책은 근래 접하기 힘들었는데, 생소했습니다. 예를 들어 내용 중에 중년의 삶은 사춘기(思春期)와 유사하다며 사추기(思秋期)라는 재미있는 표현을 사용합니다.
그리고 저자가 교수이기에 참조 교과서의 향이 나기도 합니다. 불편한 느낌은 아니고 자연스러운 느낌입니다. 삶에 대한 이야기는 주변의 이야기 처럼 익숙하게 다가오고, 편하게 읽을 수 있는 느낌이었습니다.

책이 조금은 졸린 느낌이 있어서 장사의신이라는 책과 동시에 읽었습니다.

사추기(思秋期): 중장년 층이 새로이 정신적, 육체적으로 변화를 겪는 시기를 이르는 말

시작

“본보기를 따라 사는 사람에게는 생명력이 없다. 당신이 당신의 삶을 살지 않는다면, 누가 당신의 삶을 살겠는가? 그러니 당신 자신의 삷을 살아야 한다. -- 카를 융

카를 융은 중년이 넘어서야 비로소 사는 것이 무엇인지 그 깊은 맛을 알 수 있고, 비로소 자기실현을 할 수 있다고 언급했습니다. 중년기는 말 그대로 '나로 살아야 할'시기라는 점입니다.
이제 중년이라는 나이로 접어들게 되는 저는 삶에 대해서 반복적으로 의문을 가져야 한다고 생각합니다. 과거와 지금의 시기가 다른 점은 과거에는 미래를 위해서 살아갔던 것 같습니다. 지금은, 과거를 곱씹으며, 미래를 조심스럽게 나아가고 있는 것 같습니다.
성숙이라는 것은 경험을 통해서만 이뤄낼 수 있는 것으로 보입니다. 이 경험을 이 책을 통해, 교수의 상담내용을 통해서 간접체험을 하고 성숙해져 가는데에 데움이 될 수 있을 것 같습니다.

중년이란?

고령화 사회가 되었기 때문에? 중년기라는 말이 대중적으로 익숙해져갔습니다. 아버지가 되어 그 자리가 익숙해져가는 시기이며, 자신을 포기하고, 가족과 자식들을 위해서 한없이 헌신하는 시기였습니다. '젊은이'도 아니고 '늙은이'도 아닌 과도기적인 시기에 자신을 잃어버리지 않기 위해서는 자신에 대해서 아끼며 살아가야 합니다. 그리고, '노년기' 전에 낼 수 있는 마지막 기회을 잡을 수 있습니다.

“오늘부터는 나를 아껴야 한다”

목차

  1. 나를 아껴야 한다.
  2. 중년에는 자기실현을 하기 가장 좋다
  3. 내 인생의 목적은 무엇인가
  4. 사랑이 사람을 살게 한다.
  5. 나를 아끼면 과거도 변한다

중년의 장점과 중년기에 자신이 할 수 있는 일에 대한 정의. 과거보다 나아진 점은 경험을 통한 대화방식이겠다. 원만한 의사소통 능력은 어렸을 적에는 급하기만 자신을 여유롭게 가져간다.

과거와 미래를 동시에 볼 수 있다. 모든 분야에 대해서 급속한 발전 청년기에 이뤄낸다. 중년기에는 이 성장을 유지하고 노년기에는 쇠퇴기로 접어든다. 삶은 성장 - 유지 - 퇴보 순으로 진행 된다. 현재 나는 성장과 유지하는 단계로 판단하고 있다. 아직은 꾸준히 자기발전에 노력을 하고 있으며, 이뤄 낸 것이 아직 없기 때문이다.

내가 동의하는 철학은 가정이 화목해야 성공할 수 있는 믿음이다. 내실이 튼튼하다면, 하는 일에 대해서 집중을 할 수 있기 때문이다. 그렇기에 아내를 존경합니다.

주요단어

  1. 젊음과 늙음이 교차하는 시기
  2. 부모와 자식 간의 관계
  3. 줄탁동시
  4. 사소한 감정을 나누자
  5. 잘못을 인정할 때 가족관계는 돈독해 진다
  6. 권위적인 삶, 권의주의적인 삶
  7. 직관적인 문제해결능력
  8. 인생의 절정기
  9. 오뚝이이 같은 재도전 할 수 있게 만드는 자존감
  10. 제대로 된 사과가 필요하다
  11. 상대에게 대한 공감
  12. 봉사 .... ?
  13. 생산성(generativity) ... 자식이 공부 잘하는 사람이 제일 목소리가 크다
  14. 사랑하고 일하라.
  15. 친밀함의 상징
  16. 신체를 통한 즐거움,섹스리스, 유혹을 물리치다
  17. 젊음을 확인할 수 있는 방법은 이성을 통해서 이다
  18. 사춘기, 사추기
  19. 가족과 보내는 하루 평균시간 13분
  20. 비난, 경멸, 방어, 의사방해
  21. 성숙한 부모, 스위트홈
  22. 중년에 부모와 사이가 나빠지는 이유는 부모와 자신과의 분리가 필요하다
  23. 소문만복래
  24. 좋아서 하는 행동, 자발적 행동
  25. 잘 놀아야 한다
  26. 놀기 위해 일하다.

책을 다 읽고 난 뒤의 느낌은 이해는 하는데 남아있는 것은 없는 같았습니다. 그래서 다시 한번 읽고서 내용을 정리하려고 했습니다만, 정독하는 것 보다는 책을 한장씩 넘겨가며 주요단어를 수집하기로 했습니다.

#독서

반응형

#초보자 #생산력

본 글은 아래 3가지 내용을 담고 있습니다.

  • 기술 조언에 대한 중요한 맥락과 동기
  • 기술 조언
  • 추천 읽을거리 시작하기에 좋은 고품질 책과 블로그에 대한 링크

주니어를 위한 일반적인 조언

1. 코드가 포인트가 아니다

개발자로서 우리는 코드 작성을 좋아합니다. 우리 대부분은 명확하고 멋진 작업을 원하고, 다른 세계에 관심을 기울이지 않고, 풀 수 있는 재미있는 기술 퍼즐입니다.

올바른 문제를 해결하고 있는지 확인하기 위해 합리적인 노력을 해야 합니다. Peter Drucker의 말을 인용하자면: 전혀 하지 말아야 할 일을 효율적으로 하는 것만큼 쓸모없는 것은 없습니다. 일반적으로개발 초기에 실제 사용자에게 지속적으로 피드백을 수집합니다.

무엇이 중요한 문제인가?
올바른 일을 하는 것과 일을 제대로 하는 것 사이에 놓인 효과와 효율성의 혼란에서 모든 문제는 비롯된다. 확실한 것은 하지 않아도 될 일을 효율적으로 하는 것 만큼 쓸모없는 일은 없다는 것이다.

  • 피터 드러커

소프트워어 개발은 비용이 많이 들고, 실제 프로젝트의 대부분의 유지보수 비용으로 사용됩니다. 이를 시용자/비즈니스 결과라는 목표와 결합하게 되면, 좋은 코드는 대부분 없는 경우가 많습니다
소프트웨어 개발은 유지 관리 비용이 들어가는 실제 프로젝트의 노력의 대부분과 함께 비용이 많이 듭니다. 이것을 사용자/비즈니스 결과라는 목표와 결합하면 최상의 코드는 코드가 없는 경우가 많습니다. Bill Gates의 말을 인용하자면 "코드로 프로그래밍 진행 상황을 측정하는 것은 항공기 제작 진행 상황을 무게로 측정하는 것과 같습니다."

2. 소프트웨어 설계 문제

개발 경력의 첫 5년 동안 저는 소프트웨어 설계가 소프트웨어 설계자나 특별한 역할을 맡은 다른 사람들을 위한 것이라고 생각했습니다. 나는 "일을 끝내는 것"에 집중했고, 소프트웨어 디자인과 테스트 작성과 같은 관행이 방해가 된다고 생각했습니다. 내 코드는 작동했고, 많은 일을 하고 있었습니다. 많은 일을 하고 있다고 생각했습니다.

그런 다음 Robert C. Martin 의 Clean Code 를 읽었습니다 . 이 책은 소프트웨어 디자인에 관심을 갖도록 동기를 부여하고, 예제와 많은 기술적 발견을 포함하고 있습니다. 가장 개념적인 테이크어웨이는 "빨리 가는 유일한 길은 잘 가는 것"입니다. 즉, 엉망으로 만들면 속도가 느려집니다.

잘 설계된 깨끗한 코드를 작성하는 방법을 배우는 것은 물론 시간과 노력이 필요합니다. 그리고 시작하면 속도가 느려지고 실수를 하게 됩니다. 단순한 것은 쉽지 않습니다.

3. 모범 사례 사용

테스트 작성은 유익한 경향이 있습니다. 예외가 있지만 대부분의 경우 자동화된 테스트를 작성하는 것이 좋습니다. 테스트 작성은 모범 사례의 한 예입니다.

테스트 작성이 처음이라면 모범 사례를 따르고 모든 것에 대한 테스트를 작성하십시오. 시작할 때 맹목적으로 모범 사례를 따르는 것이 자신의 미숙한 판단을 따르는 것보다 낫습니다 . 시간이 지남에 따라 테스트를 효과적으로 작성하는 방법을 배우고, 테스트를 작성하는 것이 가치가 없는 상황과 엉망인 상황을 구분할 수 있게 될 것입니다. 또한 디버깅 세션의 감소와 테스트에서 활성화된 걱정 없는 리팩토링을 경험함으로써 테스트가 보다 본능적인 수준으로 가져오는 가치를 이해하기 시작할 것입니다. 판단력을 개발한 후에는 모범 사례를 초월할 수 있습니다 .

이 조언은 당신이 2학년인 모든 영역의 모범 사례에 적용됩니다. 자동화된 테스트는 하나의 예일 뿐입니다.

한 가지 큰 문제는 합리적인 모범 사례와 무의미하거나 심지어는 역효과를 낳는 것과 구별하기가 쉽지 않다는 것입니다. 이것은 대부분의 기존 코드가 엉망이고 "숙련된" 및 "선배" 개발자를 포함하여 대부분의 개발자가 소프트웨어 설계 기본 사항을 모르기 때문에 더 복잡해집니다. 이것은 좋은 멘토를 갖는 것을 매우 가치있게 만듭니다. 그것을 제외하고 내 자신의 경험에 기반한 조언 중 하나는 귀하의 언어 또는 프레임워크 커뮤니티에 특정한 모범 사례를 주의하라는 것입니다. 수십 년 동안 주변에 있었던 상록 조언을 찾으십시오.

주니어를 위한 기술 조언

1. 테스트 코드 작성

자동화된 테스트를 작성합니다. TDD( Test Driven Development ) 를 통해 코드보다 먼저 테스트를 작성할 수 있습니다. 이렇게 하면 반복 가능한 방식으로 코드가 올바른지 쉽게 확인할 수 있으므로 수동으로 재시도하거나 세션을 디버깅하지 않아도 됩니다.

디버그를 실행합니다.

아마도 중요한 것은 테스트를 통해 코드를 리팩토링할 수 있는 안전망을 얻을 수 있다는 것입니다. 그리고 코드를 깨끗하게 유지하려면, 지속적인 리팩토링이 필요합니다. 신뢰할 수 있는 테스트 모음이 없으면 코드가 썩을 가능성이 훨씬 더 높아집니다.

코드 재사용을 위해 상속을 사용하거나 정적 함수를 사용할 때와 같이 코드 디자인이 좋지 않으면 테스트 작성이 어렵습니다. 반면에 전역 종속성이 없는 SOLID 클래스가 있다면, 멋진 테스트를 작성하는 것이 그렇게 어렵지 않습니다.

잘못 작성된 테스트는 속도를 늦추기 때문에 테스트 디자인이 중요합니다. 테스트 중인 코드의 구현 세부 사항이나 시스템 구조에 테스트를 바인딩하지 마십시오. Mocks의 남용을 피하고 더 나은 Test Doubles를 작성 하십시오 .

2. 코드 재사용을 위해 상속을 사용하지 마십시오

이것은 "모범 사례 사용" 섹션을 염두에 두는 모범 사례 중 하나입니다. 내 조언: 시작할 때 코드 재사용을 위해 상속을 전혀 사용하지 마십시오. 그것은 거의 올바른 호출이 아니며 많은 피해를 줄 수 있습니다. 상속보다 구성을 선호 합니다.

3. 객체 지향 코드 작성

STUPID 가 아닌 SOLID 코드를 작성 하십시오. 이러한 원칙과 반패턴을 이해하는 데는 많은 가치가 있습니다.

실제로 개체를 만듭니다. 정적 메서드만 있는 클래스는 OO가 아닙니다. 정적 코드를 완전히 사용하지 마십시오.

참조: SOLID에 대한 나의 방어 .

4. 기능 코드 작성

( 함수형 프로그래밍 은 구조 프로그래밍 과 혼동되어서는 안 됩니다 .)

이 요점은 기능적 언어로 완전히 전환하는 것에 관한 것이 아닙니다. OO 언어에서 기능적 스타일을 사용하면 이점을 얻을 수 있습니다. 특히 변경 가능한 상태를 최소화 하고 함수에서 한 가지 작업을 수행합니다.

5. 정보에 입각한 복제 사용

많은 양의 코드 덩어리를 여러 위치에 복사하여 붙여넣는 것은 현명하지 않습니다. 자존심이 강한 개발자라면 누구나 곧 이것을 배우고 DRY( Don't Repeat Yourself ) 형식을 따르기 시작합니다. 불행히도, 의도적으로 DRY를 추구하면 과도한 엔지니어링과 우발적인 복잡성으로 이어지는 경우가 많습니다. DRY의 대응물인 WET(Write Everything Twice)가 여기에 해당합니다. WET의 기본 개념은 중복이 세 번째 발생하는 경우에만 중복을 제거하는 것입니다.

6. 유형, 이름 및 설명

자체 문서화 코드를 작성하고 주석을 피하십시오.

설명을 작성할 때마다 찡그린 표정을 짓고, 표현력의 실패를 느껴야 합니다. -- 로버트 C. 마틴

코멘트는 거짓말을 할 수 있기 때문에 위험합니다. 코드는 주석이 업데이트되지 않고 변경될 수 있습니다. 주석 바로 아래에 새 코드를 추가할 수 있습니다. 댓글이 처음부터 잘못되었거나 정확하지 않을 수 있습니다. 이런 일이 발생하면 댓글은 쓸모없게 될 뿐만 아니라 오해의 소지가 있습니다.

자체 문서화 코드를 작성하려면:

  • 기능에서 한 가지 작업 수행
    • 함수에서 한 가지 작업을 수행하여 명확한 이름을 지정할 수 있습니다.
    • 주석을 추가하여 함수의 다른 섹션이 수행하는 작업을 설명할 필요가 있을까요? 대신, 각 섹션을 고유한 이름의 함수로 추출하십시오.
    • "추출할 때까지 추출": 의미 있는 기능을 추출할 수 있다면 아마도 그렇게 해야 할 것입니다. 작은 기능을 두려워하지 마십시오.
    • 명령 쿼리 분리
    • 클래스 에 대한 단일 책임 원칙 (SOLID의 S)과 유사
  • 상태 최소화
  • 유형을 사용하십시오 . 코드를 실행하는 테스트 스위트와 결합하여 진실을 말하는 유형에 의존할 수 있습니다.
  • 혼합 유형을 피하십시오 . 정수, 부울 또는 문자열이 될 수 있는 매개변수 또는 반환 값을 피하십시오. 이것은 한 가지만 수행하는 집중 함수를 작성하는 경우 자연스럽게 발생합니다.
  • 테스트 작성 . 잘 작성되고 포괄적인 테스트 스위트는 프로덕션 코드가 어떻게 사용되며 어떻게 작동하는지 보여줍니다.

Robert C. Martin의 Clean Code 에는 이름 지정 및 주석에 대한 몇 가지 좋은 경험 법칙이 있습니다.

주니어 추천도서

서적

반응형

+ Recent posts