Соглашения об именах Python для словарей или списков - PullRequest
0 голосов
/ 11 декабря 2018

В кодировании ООП существует давнее соглашение по присвоению имен методам доступа / мутаторам get_something и set_something.Они напрямую обращаются к свойствам или манипулируют ими.

Однако, если тип чего-то похож на dict или list в Python, что лучше выбрать для имени функции-манипулятора?

Например,

  1. У меня есть list с именем booklist, который содержит названия книг, которые я хочу прочитать.Я хочу назвать функцию, которая добавляет новую книгу в booklist.

    booklist = ["Clean Code", "Code Complete"]
    
    def insert_book_into_booklist(new_book):
        booklist.append(new_book)
    

    Есть ли лучший выбор insert_book_into_booklist?Совсем как append_book_in_booklist или set_booklist?

У меня есть dict с именем booklist.Ключ - это название книг, которые я хочу прочитать, а значение - Международный стандартный номер книги (ISBN).Я хочу назвать функцию, которая вставляет новую книгу в booklist.

booklist = {"Clean Code": "9789862017050", "Code Complete": "9789536185344"}

def insert_book_into_booklist(new_book, isbn):
    if new_book not in booklist:
        booklist[new_book] = isbn

Есть ли лучший выбор insert_book_into_booklist?Прямо как set_booklist?

Спасибо.

1 Ответ

0 голосов
/ 11 декабря 2018

Как вы упомянули ООП, давайте представим, что ваш "список книг" является членом класса:

class BookList(object):

    def __init__(self):

        self.booklist = []

Итак, если вы хотите добавить новую книгу в свой список, назовите свой методкак глагол, что делает то, что вам нужно, например, «add_book».Кроме того, вам не нужно добавлять «_into_booklist», потому что ваш класс сам по себе является BookList, и этого достаточно, чтобы понять, куда будет добавлена ​​книга:

class BookList(object):

    def __init__(self):

        self.booklist = []

    def add_book(book):

        self.booklist.append(book)

Кроме того, вы можете заставить этот метод работатьс ISBN:

class BookList(object):

    def __init__(self):
        # creating dict, not list
        self.booklist = {} 

    def add_book(book, isbn):

        self.booklist[book] = isbn

Также как Ev.В комментарии Коунис сказал, что вы можете опустить часть метода «_book» и оставить только «add», но если ваш класс станет более сложным в будущем, это имя может получить неоднозначные выражения.Например, если у вас есть метод «add_book», вы можете добавить метод «add_books» позже (для добавления большого количества книг за раз), и значение этих имен легко понять.Но если вы сократите его, чтобы «добавить», будет менее понятно, что на самом деле добавляет этот метод.

...