본문 바로가기

반응형

개발

(40)
함수 인라인하기 (Inline Function) # Before def get_rating(driver): return 2 if more_than_five_late_deliveries(driver) else 1 def more_than_five_late_deliveries(driver): return 2 if driver.number_of_late_deliveries > 5 else 1 # After def get_rating(driver): return 2 if driver.number_of_late_deliveries else 1 배경 언제 적용하면 될까? 함수 본문이 이름만큼 명확할 때 인라인을 하자. 간접 호출을 너무 과하게 쓰는 것도 흔한 인라인 대상 단순히 위임하기만 하는 함수들이 너무 많아서 위임관계가 복잡히 얽혀 있으며 인라인 한다.
[javascript] Generate range of integers 아래 문제는 전형적인 자바스크립트의 for loop에 대한 문제이다. 코드는 아래와 같이 작성 가능하다. www.codewars.com/kata/55eca815d0d20962e1000106/train/javascript Codewars: Achieve mastery through challenge Codewars is where developers achieve code mastery through challenge. Train on kata in the dojo and reach your highest potential. www.codewars.com function generateRange(min, max, step) { let temp = [] for (let i = min; i { expect(g..
[Effective Python] 19. 함수가 여러 값을 반환하는 경우 절대로 네 값 이상을 언패킹 하지 마라 책을 읽은 후에, 복습 차원에서 아래 문제들을 스스로 풀어보세요 :) 문제 def get_status(numbers): minimum = min(numbers) maximum = max(numbers) count = len(numbers) average = sum(numbers) / count sorted_numbers = sorted(numbers) middle = count // 2 if count % 2 == 0: lower = sorted_numbers[middle -1] upper = sorted_numbers[middle] median = (lower + upper) / 2 else: median = sorted_numbers[middle] return minimum, maximum, aver..
Buying a Car Buying a Car 문제 특정 가격의 차를 사기 위해서, 내가 저축하는 돈과 내가 현재 가진 차의 가격을 고려하였을 때, 차를 구입하기위해서 기간이 얼마나 걸릴 지 계산한다 나의 풀이 이 문제를 제 시간에 풀지 못하였다. 내가 이 문제를 풀지 못한 이유는 문제 자체 이해를 잘 못하였다. 단계별로 어떻게 계산해 나가야할지 파악하지 못하였다 숫자 배열 및 나머지 다루는데 미숙하다 다른 사람의 풀이 Best practice def nbMonths(old, new, saving, loss): for i in range(9999): if saving * i + old >= new: break if i % 2 == 1: loss += 0.5 old = old * (100 - loss) / 100 new = ne..
[SOLID] 파이썬 코드로 이해하는 SRP(Single Responsibility Principle) # srp.py class Bookshelf: def __init__(self): self.books = [] def add(self, name): self.books.append(name) def remove(self, name): return self.books.remove(name) def all_list(self): return "\n".join(f"{index}: {book}" for index, book in enumerate(self.books, 1)) class BookshelfFileIO: @staticmethod def save_to_file(bookshelf, filename): with open(filename, "w") as file: file.write(bookshelf.all_..
[AWS] SNS(Simple Notification Service)를 이용해서 publish 했을 때 내 메일로 받아보자 SNS는 Simple Notification Service의 약자 이다. 회사에서도 SNS를 사용하는 서비스가 꽤나 존재 하지만, 나는 여태껏 잘 모르고 있었다. SNS 에서는 크게 3가지 키워드가 있다. Topic, Publish, Subscribe 쉽게 설명하자면, 어떤 유투브 채널(topic)에 대해서, 폰 알림 설정을 하면(subscribe), 유투브 채널에 영상이 업로드 될 때(publish) 알림을 설정한 폰으로 알림이 가게된다. 이를 pub/sub 구조라 한다. 굳이 알림이 아니더라도 여러면에서 활용이 무궁무진하다. 이 포스트에서는 AWS 콘솔 상에서 topic, publish, subscribe 를 손으로 직접 세팅하고 경험해보려고 한다. AWS 공식 페이지에서 제공하는 기본 사용방법을 재..
함수 추출하기 (Extract Function) # Before def print_owing(invoice): print_banner() outstanding = calculate_outstanding() # 세부 사항 출력 print(f'고객명: {invoice.customer}') print(f'채무액: {outstanding}') # After def print_owing(invoice): def print_detail(outstanding): print(f'고객명': {invoice.customer}) print(f'채무액': {outstanding}) print_banner() outstanding = calculate_outstanding() print_details(outstanding) 배경 코드를 언제 묶어야 하나? 길이 재사용성 목적..
Regex Failure - Bug Fixing #2 간단 소개 이미 어느정도 작성된 정규표현식이 테스트를 통과를 못하는데, 이것을 통과하도록 수정하는 문제이다. 최초 풀이 테스트를 보았을 때, case sensitive 문제로 생각하고 대소문자 구분을 어떻게 하지? 생각하면서 스택오버플로우를 찾아보았다. (?i) 키워드로 대소문자 구분 함을 알 수 있었다 Best Practice import unittest import re def filter_words(phrase): return re.sub("bad|mean|ugly|horrible|hideous", "awesome", phrase, flags=re.IGNORECASE) class TestFilterWords(unittest.TestCase): def test_filter_words(self): se..

반응형