ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

ํšŒ์‚ฌ๋ฅผ ๋‹ค๋‹ˆ๊ณ  ํŒ€์›๋“ค๊ณผ ๊ฐ™์ด ์ผ์„ ํ•˜๊ฒŒ ๋˜๋ฉด์„œ ๋งŽ์€ ๊ฒƒ๋“ค์„ ๋ฐฐ์› ๋‹ค. ์†Œํ†ตํ•˜๋Š” ๋ฒ•๊ณผ ์ฝ”๋“œ๋ฅผ ๊ฐ€๋…์„ฑ ์ข‹๊ฒŒ ์ž‘์„ฑํ•˜๋ ค๋Š” ๋…ธ๋ ฅ๋“ค์„ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค. python ์ฝ”๋”ฉ ์ปจ๋ฒค์…˜์— ๋‚˜์™€์žˆ๋Š” ๊ฒƒ๋„ ์žˆ์ง€๋งŒ ๊ทธ ์™ธ์—๋„ ์ƒˆ๋กญ๊ฒŒ ์•Œ๊ฒŒ๋œ ๋‚ด์šฉ๋“ค์ด ์žˆ์–ด ์ •๋ฆฌํ•  ๊ฒธ ๊ธ€์„ ์“ฐ๊ฒŒ ๋˜์—ˆ๋‹ค.

Naming

  • ํ•จ์ˆ˜๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋™์‚ฌ ๋จผ์ € ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ๋งŒ์ผ property๋ผ๋ฉด ์ƒํ™ฉ์ด ๋ฐ”๋€Œ๊ฒ ์ง€๋งŒ ์˜ˆ๋ฅผ ๋“ค๋ฉด, eye_crop์€ crop_eye๋กœ ๋ฐ”๊พธ๋ฉด ๋œ๋‹ค.
  • class๋Š” ๋ช…์‚ฌํ™” ์‹œํ‚ค๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ์ฑ…์—๋„ ๋งŽ์ด ์ ํ˜€์žˆ์ง€๋งŒ camelcase๋ฅผ ๊ถŒ์žฅํ•œ๋‹ค. ์œ„์˜ ํ•จ์ˆ˜๋ฅผ class๋กœ ๋งŒ๋“ ๋‹ค๋ฉด EyeCropper๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.
  • ์ฃผ๋กœ github์— ์ž˜ ์งœ์—ฌ์ง„ ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด์„œ ๋„ค์ด๋ฐ ์•„์ด๋””์–ด๋ฅผ ์–ป๋Š”๋ฐ get, export, parse, generate, request ๋“ฑ์ด ์ž์ฃผ ์‚ฌ์šฉ๋œ๋‹ค.

for๋ฌธ

๊ฐ€๋Šฅํ•˜๋ฉด list comprehension์œผ๋กœ. ๊ฐ€๋…์„ฑ์ด ์ข‹๋‹ค. i ๊ฐ™์ด ์˜๋ฏธ ์—†๋Š” ๋ณ€์ˆ˜๋Š” ๊ฐ€๋Šฅํ•˜๋ฉด ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ์ฝ”๋“œ๋ฅผ ๋ดค์„ ๋•Œ ์ดํ•ดํ•˜๊ธฐ ์–ด๋ ต๊ธฐ ๋•Œ๋ฌธ

# bad
for i in image_filepaths:
    print(i)

# Good
for image_filepath in image_filepaths:
    print(image_filepath)

ํ•จ์ˆ˜

์ƒ์ˆ˜๋Š” ๋Œ€๋ฌธ์ž๋กœ ์‚ฌ์šฉํ•˜๋Š”๊ฒŒ ์ข‹๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฐ€๋Šฅํ•˜๋ฉด ์ƒ์ˆ˜๋Š” ํ•จ์ˆ˜ ๋‚ด์—์„œ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ์ธ์ž๋กœ ๋ฐ›๊ฑฐ๋‚˜ ์ „์—ญ๋ณ€์ˆ˜๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ์ถ”์ฒœํ•œ๋‹ค. ๊ทธ ์ด์œ ๋Š” ์ƒ์ˆ˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ ์‰ฝ๊ฒŒ ์ฐพ๊ธฐ ์–ด๋ ต๊ธฐ ๋•Œ๋ฌธ.

# Bad
def foo():
    height = 100
    width = 150
    return width * height 

# Good
def foo(height=100, width=150):
    return width * height

์ฃผ์„

์ฃผ์„์ด ์—†์–ด๋„ ์ข‹์€ ๋ณ€์ˆ˜ ์ด๋ฆ„์„ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ์ฝ์—ˆ์„ ๋•Œ ํ•จ์ˆ˜์˜ ์—ญํ• ์ด ๋ฌด์—‡์ธ์ง€ ์˜ˆ์ธกํ•  ์ˆ˜ ์žˆ๋„๋ก. ๋งŒ์ผ ์ธ๋ฑ์‹ฑ์„ ํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ์ดํ•ด๋ฅผ ๋•๊ธฐ ์œ„ํ•ด ๊ฐ„๋‹จํžˆ ์–ด๋–ค ์˜๋ฏธ์ธ์ง€ ์ฃผ์„์„ ๋‹ค๋Š” ๊ฒƒ์€ ์ข‹์€ ๋ฐฉ๋ฒ•์ด๋‹ค. ํ•จ์ˆ˜์— ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ์šฉ์–ด๋“ค์ด ์กด์žฌํ•œ๋‹ค.

eye_list[0]  # left_eye

class

์–ด๋–ค ๊ธฐ๋Šฅ์„ ๋งŒ๋“ ๋‹ค๋ฉด class๋กœ ๋งŒ๋“ค์–ด์„œ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. class๋Š” ํ•˜๋‚˜์˜ ๋ฌธ์„œ๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋˜๊ณ  ๊ทธ ์•ˆ์˜ ํ•จ์ˆ˜๋“ค์€ class ์•ˆ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ํ•จ์ˆ˜๋“ค๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ๋งŒ์ผ ๋‹ค๋ฅธ ๊ณณ์—์„œ๋„ ์‚ฌ์šฉ๋œ๋‹ค๋ฉด common์ด๋‚˜ utils๋ฅผ ๋งŒ๋“ค์–ด ์ž์ฃผ ์“ฐ์ด๋Š” ํ•จ์ˆ˜๋“ค์„ ๋ชจ์•„๋‘๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ์ฝ”๋“œ ๊ฐ€๋…์„ฑ๋„ ์ข‹๊ณ  ํ†ต์ผํ™”ํ•˜๊ธฐ ์‰ฝ๋‹ค.

์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง

ํšŒ์‚ฌ์—์„œ ๋งŽ์ด ์‹ ๊ฒฝ์ผ๋˜ ๋ถ€๋ถ„์ด๋‹ค. ์ฝ”๋“œ๋ฅผ ์งœ๊ณ  ๋‚˜์„œ ๋‹ค์‹œ ๋ณด๋ฉฐ ํšจ์œจ์ ์œผ๋กœ ์ž‘์„ฑํ–ˆ๋Š”์ง€, ๋„ค์ด๋ฐ์ด ์• ๋งคํ•œ ๊ฒƒ์€ ์—†๋Š”์ง€, for๋ฌธ์„ ๋‚จ๋ฐœํ•˜์ง„ ์•Š์•˜๋Š”์ง€ ๋“ฑ์„ ์‚ดํŽด๋ณธ๋‹ค. ๋ฆฌ๋ทฐ์–ด๊ฐ€ ๋˜์—ˆ๋‹ค๋Š” ๋งˆ์Œ์œผ๋กœ ์ž์‹ ์˜ ์ฝ”๋“œ๋ฅผ ๋ณด๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค. ์ฒ˜์Œ ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง์„ ํ–ˆ๋˜ ๋‹น์‹œ ๊ตฌ์กฐ๋ถ€ํ„ฐ ๋‹ค์‹œ ์งœ๋Š” ์ƒํ™ฉ๋„ ๊ฒช์—ˆ๋Š”๋ฐ ๊ทธ๋ ‡๊ฒŒ ๋ฆฌํŒฉํ† ๋ง์„ ๊ฑฐ์น˜๋‹ˆ ์ฝ”๋“œ๊ฐ€ ๋งˆ์น˜ ๋‚ด ์ž์‹์ฒ˜๋Ÿผ ๋А๊ปด์ง€๋Š” ๊ทธ ํ–‰๋ณต๊ฐ์€ ์ •๋ง ์ตœ๊ณ ๋‹ค๐Ÿ˜‹ ๋‚˜์ค‘์ด ๋˜๋ฉด ๋‚ด๊ฐ€ ๋ฆฌ๋ทฐํ•˜๋Š” ๋‚ ๋„ ์˜ค๊ฒ ์ง€!!! ๋งˆ์ง€๋ง‰์œผ๋กœ ์•„์ฃผ ์ข‹์€ 2๊ฐœ์˜ ํˆด์ด ์žˆ๋‹ค. pylint์™€ black. ์ฝ”๋“œ๊ฐ€ ๋ƒ„์ƒˆ๋‚˜๋Š” ๊ณณ์€ ์—†๋Š”์ง€ ํ‘œ์ค€์— ๋งž๋Š”์ง€ ๊ฒ€์‚ฌํ•ด์ฃผ๋Š” ํˆด๋“ค์ด๋‹ค. PR ๋ฆฌ๋ทฐ๋ฅผ ๋ฐ›๊ธฐ ์ „์— ๊ผญ ๋ฏธ๋ฆฌํ•ด๋ณด๋Š” ๊ฒƒ์„ ์ถ”์ฒœํ•œ๋‹ค. ๋‚˜๊ฐ™์€ ๊ฒฝ์šฐ๋Š” github action์—์„œ ์ž๋™์œผ๋กœ ๊ฒ€์‚ฌํ•ด์ฃผ๋Š” ํŒŒ์ดํ”„๋ผ์ธ์ด ์ ์šฉ๋˜์–ด ์žˆ์–ด์„œ ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค๋ฉด pushํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ๋˜์–ด์žˆ์—ˆ๋‹ค.

์ง€๊ธˆ๊นŒ์ง€ ๋ฐฐ์šด ๊ฒƒ์€ ์ด๊ฒŒ ์ „๋ถ€์ด๋‹ค. ๋” ๋งŽ์€ ๊ฒƒ์„ ์•Œ์•„์•ผํ•˜๊ฒ ์ง€๋งŒ ์ง€๊ธˆ๊นŒ์ง€ ๋‚ด๊ฐ€ ๋ฐฐ์šด ๊ฒƒ๋“ค์ด ๋ˆ„๊ตฐ๊ฐ€์—๊ฒ ๋„์›€์ด ๋˜์—ˆ์œผ๋ฉด ํ•œ๋‹ค.

์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
ยซ   2025/05   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Total
Today
Yesterday