อ่านฉบับเต็มได้ที่ https://www.python.org/dev/peps/pep-0008/#code-lay-out ในเอกสารนี้เอามาเฉพาะเรื่องที่มีคนสอบถามมาบ่อย ๆ
“Beautiful is better than ugly.” คำว่า Beautiful ในที่นี้หมายถึงการเขียนให้อ่านง่าย สบายตา การใช้ space, blank line ช่วยได้ เช่น
class A : def func1(self): pass def func2(self): pass class B : def func1(self): pass def func2(sefl): pass
ใช้ Indentation หรือการย่อหน้า (tab หรือ space ) ในภาษา Python ใช้สิ่งนี้เป็นการบอกถึง grouping of statements (https://www.quora.com/Why-is-indentation-so-important-in-Python) เราสามารถเลือกใช้ tab หรือ space อย่างใดอย่างหนึ่งใน group of statements เดียวกัน ห้ามใช้ปนกัน (เคยใช้ได้ใน python 2 )
def calculate_sum(number_list): sum_list = 0 for number in number_list: sum_list = sum_list + number return sum_list def calculate_mean_sqaure(number_list): sum_squares = 0 for number in number_list: sum_squares = sum_squares + number**2 mean_squares = sum_squares / len(number_list) return mean_squares
ความยาวของตัวอักษร ไม่ควรเกิน 79 ตัวอักษรสำหรับ statement และ ไม่ควรเกิน 72 ตัวอักษรสำหรับ comment เป็นข้อแนะนำจาก PEP 8 ไม่ใช่กฏ หากมีความจำเป็นที่ต้องเขียนอะไรที่ยาวๆ เกินกว่านี้เขาแนะนำให้ใช้เทคนิคที่เรียกว่า hanging indent คือการเพิ่ม \n ( เคาะ Enter) หรือ \ (backslash) เช่น
my_str = “Many a times it is required to treat more than one statements in a program as a block.”
ควรเปลี่ยนเป็น
my_str = "Many a times it is required \to treat more than one statements\in a program as a block."
แต่ในกรณที่ข้อมูลอยู่ภายในวงเล็บ Python จะถือว่าข้อมูลมีความต่อเนื่องอยู่แล้ว เช่น
def function(arg_one, arg_two, arg_three, arg_four):
return
จะเหมือนกับ
def function(arg_one, arg_two,
arg_three, arg_four):
return
arg_three, arg_four):
return
dict_of_people_ages = { "ram": 25, "john": 29, "shiva": 26 } อ่านง่ายกว่า dict_of_people_ages = { "ram": 25, "john": 29, "shiva": 26 }
One Line on statement การเขียนชุดคำสั่งที่มากกว่า 1 ชุดคำสั่งในหนึ่งบรรทัดทำได้แต่ไม่เป็นนิยม และไม่แนะนำ หากเราต้องการเขียนจะต้องใช้ ; คั่นระหว่างชุดคำสั่ง เช่น
print('one'); print('two')
if x == 1: print('one')
ควรเขียนเป็น
print('one')print('two') if x == 1: print('one')
การ Import library นิยม import เข้ามาทีละบรรทัด เช่น
import os, sys
ควรเขียนเป็น
import osimport sys
และเพื่อให้ไล่อ่านหรือ debug ง่าย ก็มีข้อแนะนำลำดับของการ import ไว้แบบนี้
- standard libraries ควร import เข้ามาก่อน
- related libraries ควร import ในลำดับต่อมา
- custom libraries หรือ local libraries เอาไว้หลังสุด
และที่เห็นทำกันบ่อยแต่ก็แนะนำให้เลี่ยงคือการใช้ wild card เช่น
from library_a import *
ประเด็นก็เพื่อความสะดวกในการ debug ครับ
หากเราต้องการตรวจดูว่า style การเขียนของเราเป็นไปตามที่ควรจะเป็นไหม ก็มี tool ช่วยครับ เช่น https://pypi.org/project/pycodestyle/ หรือ ตัวที่ช่วยแก้ให้เลยก็มี คือ black ใช้การติดตั้งผ่าน pip หรือ pip3 (ประสบการณ์ส่วนตัว แก้ให้บ้าง ไม่แก้ให้บ้าง เพราะเป็นเรื่องของ style ไม่ใช่ประเด็นทางด้าน syntax หรือ logic)
Sign up here with your email
ConversionConversion EmoticonEmoticon