Tôi thấy mã hóa cứng [sic] "" Mỗi lần kiểm tra một chuỗi trống không tốt.
Phương pháp tiếp cận mã sạch
Làm điều này: foo == ""
là thực hành rất tệ. ""
là một giá trị kỳ diệu. Bạn không bao giờ nên kiểm tra chống lại các giá trị ma thuật [thường được gọi là số ma thuật]
Những gì bạn nên làm là so sánh với một tên biến mô tả.
Tên biến mô tả
Người ta có thể nghĩ rằng "trống_string" là một tên biến mô tả. Nó không phải là.It isn't.
Trước khi bạn đi và làm empty_string = ""
và nghĩ rằng bạn có một tên biến tuyệt vời để so sánh với. Đây không phải là những gì "Tên biến mô tả" có nghĩa là.
Một tên biến mô tả tốt dựa trên bối cảnh của nó. Bạn phải suy nghĩ về chuỗi trống là gì.is.
- Nó đến từ đâu.
- Tại sao nó ở đó.
- Tại sao bạn cần kiểm tra nó.
Ví dụ trường mẫu đơn giản
Bạn đang xây dựng một biểu mẫu nơi người dùng có thể nhập các giá trị. Bạn muốn kiểm tra xem người dùng có viết gì đó hay không.
Một tên biến tốt có thể là
if csvfield == CSV_NONE:
csvfield = None
0Điều này làm cho mã rất dễ đọc
if formfields.name == not_filled_in:
raise ValueError["We need your name"]
Ví dụ phân tích cú pháp CSV kỹ lưỡng
Bạn đang phân tích các tệp CSV và muốn chuỗi trống được phân tích cú pháp là
if csvfield == CSV_NONE:
csvfield = None
1[Vì CSV hoàn toàn dựa trên văn bản, nên nó không thể biểu thị
if csvfield == CSV_NONE:
csvfield = None
1 mà không sử dụng từ khóa được xác định trước]Một tên biến tốt có thể là
if csvfield == CSV_NONE:
csvfield = None
3Điều này làm cho mã dễ dàng thay đổi và điều chỉnh nếu bạn có tệp CSV mới đại diện cho
if csvfield == CSV_NONE:
csvfield = None
1 với một chuỗi khác so với ""
if csvfield == CSV_NONE:
csvfield = None
Không có câu hỏi về việc nếu đoạn mã này là chính xác. Rõ ràng là nó làm những gì nó nên làm.
So sánh điều này với
if csvfield == EMPTY_STRING:
csvfield = None
Câu hỏi đầu tiên ở đây là, tại sao chuỗi trống xứng đáng được đối xử đặc biệt?
Điều này sẽ nói với các lập trình viên tương lai rằng một chuỗi trống phải luôn luôn được coi là
if csvfield == CSV_NONE:
csvfield = None
1.Điều này là do nó kết hợp logic kinh doanh [giá trị CSV nên là
if csvfield == CSV_NONE:
csvfield = None
1] với việc triển khai mã [chúng ta thực sự so sánh với điều gì]Cần phải có một sự tách biệt của mối quan tâm giữa hai người.
Hoạt động theo cách tương tự như phương thức trên và kiểm tra các khoảng trống trong chuỗi. Phương pháp này hiệu quả hơn bởi vì, dải [] yêu cầu thực hiện hoạt động dải cũng có tải tính toán, nếu không. không gian có số lượng tốt.
Let’s see different methods of checking if string is empty or not.
The zero length string without spaces is empty ? : Yes
The zero length string with just spaces is empty ? : No
0
5if csvfield == EMPTY_STRING:
csvfield = None
empty_string = ""
0
41if csvfield == CSV_NONE:
csvfield = None
42 if csvfield == CSV_NONE:
csvfield = None
empty_string = ""
0
98if csvfield == CSV_NONE:
csvfield = None
The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : No0
if csvfield == EMPTY_STRING:
csvfield = None
5empty_string = ""
0 if csvfield == CSV_NONE:
csvfield = None
65if csvfield == CSV_NONE:
csvfield = None
42 empty_string = ""
0 if csvfield == EMPTY_STRING:
csvfield = None
23Python3
if csvfield == CSV_NONE:
csvfield = None
8if csvfield == CSV_NONE:
csvfield = None
9 ""
if csvfield == EMPTY_STRING:
csvfield = None
1if csvfield == CSV_NONE:
csvfield = None
9 if csvfield == EMPTY_STRING:
csvfield = None
3if csvfield == EMPTY_STRING:
csvfield = None
4if csvfield == EMPTY_STRING:
csvfield = None
5if csvfield == EMPTY_STRING:
csvfield = None
6if csvfield == EMPTY_STRING:
csvfield = None
7if csvfield == CSV_NONE:
csvfield = None
9if csvfield == EMPTY_STRING:
csvfield = None
9if csvfield == EMPTY_STRING:
csvfield = None
4 if csvfield == EMPTY_STRING:
csvfield = None
5if csvfield == EMPTY_STRING:
csvfield = None
6""
55____19 if csvfield == EMPTY_STRING:
csvfield = None
9The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : No8
if csvfield == EMPTY_STRING:
csvfield = None
4if csvfield == EMPTY_STRING:
csvfield = None
5The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : No1
The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : No2
The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : No3
The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : No4
The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : No8
if csvfield == EMPTY_STRING:
csvfield = None
4if csvfield == EMPTY_STRING:
csvfield = None
5The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : No8
The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : No2
The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : No0____25
empty_string = ""
0 if csvfield == CSV_NONE:
csvfield = None
41if csvfield == CSV_NONE:
csvfield = None
42 if csvfield == CSV_NONE:
csvfield = None
43if csvfield == EMPTY_STRING:
csvfield = None
4 if csvfield == EMPTY_STRING:
csvfield = None
5The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : Yes22____855
if csvfield == CSV_NONE:
csvfield = None
9 if csvfield == EMPTY_STRING:
csvfield = None
9The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : No8
if csvfield == EMPTY_STRING:
csvfield = None
4if csvfield == EMPTY_STRING:
csvfield = None
5The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : No1
The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : No2
The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : No3
The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : No4
The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : No8
if csvfield == EMPTY_STRING:
csvfield = None
4if csvfield == EMPTY_STRING:
csvfield = None
5The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : No8
The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : No2
Đầu ra: & nbsp; & nbsp;
The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : No
The zero length string without spaces is empty ? : Yes
The zero length string with just spaces is empty ? : No
0____25empty_string = ""
0
65if csvfield == CSV_NONE:
csvfield = None
42 if csvfield == CSV_NONE:
csvfield = None
67if csvfield == CSV_NONE:
csvfield = None
Phương pháp số 4: Sử dụng không + str.isspace & nbsp;
Python3
if csvfield == CSV_NONE:
csvfield = None
8if csvfield == CSV_NONE:
csvfield = None
9 ""
if csvfield == EMPTY_STRING:
csvfield = None
1if csvfield == CSV_NONE:
csvfield = None
9 if csvfield == EMPTY_STRING:
csvfield = None
3if csvfield == EMPTY_STRING:
csvfield = None
4 if csvfield == EMPTY_STRING:
csvfield = None
5if csvfield == EMPTY_STRING:
csvfield = None
6""
55____19 if csvfield == EMPTY_STRING:
csvfield = None
9The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : No0
if csvfield == EMPTY_STRING:
csvfield = None
5empty_string = ""
0 empty_string = ""
1The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : No8
if csvfield == EMPTY_STRING:
csvfield = None
4 if csvfield == EMPTY_STRING:
csvfield = None
5The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : No1
The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : No2
The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : No3
The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : No4
The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : No8
if csvfield == EMPTY_STRING:
csvfield = None
4 if csvfield == EMPTY_STRING:
csvfield = None
5The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : No8
The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : No2
if csvfield == EMPTY_STRING:
csvfield = None
4 if csvfield == EMPTY_STRING:
csvfield = None
5The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : Yes22____855
if csvfield == CSV_NONE:
csvfield = None
9 if csvfield == EMPTY_STRING:
csvfield = None
9The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : No0
if csvfield == EMPTY_STRING:
csvfield = None
5empty_string = ""
0 if csvfield == CSV_NONE:
csvfield = None
13The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : No8
if csvfield == EMPTY_STRING:
csvfield = None
4 if csvfield == EMPTY_STRING:
csvfield = None
5The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : No1
The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : No2
The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : No3
The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : No4
The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : No8
if csvfield == EMPTY_STRING:
csvfield = None
4 if csvfield == EMPTY_STRING:
csvfield = None
5The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : No8
The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : No2
4 if csvfield == EMPTY_STRING:
csvfield = None
5if csvfield == EMPTY_STRING:
csvfield = None
The zero length string without spaces is empty ? : Yes
The zero length string with just spaces is empty ? : Yes
22____855
9 if csvfield == CSV_NONE:
csvfield = None
9 if csvfield == EMPTY_STRING:
csvfield = None
The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : No
The zero length string without spaces is empty ? : Yes
The zero length string with just spaces is empty ? : No
0
5if csvfield == EMPTY_STRING:
csvfield = None
empty_string = ""
0
13if csvfield == CSV_NONE:
csvfield = None
Đầu ra: & nbsp; & nbsp;
Phương pháp số 3: Sử dụng không + str.strip [] & nbsp;
if csvfield == CSV_NONE:
csvfield = None
8if csvfield == CSV_NONE:
csvfield = None
9 ""
if csvfield == EMPTY_STRING:
csvfield = None
1if csvfield == CSV_NONE:
csvfield = None
9 if csvfield == EMPTY_STRING:
csvfield = None
3if csvfield == EMPTY_STRING:
csvfield = None
4 if csvfield == EMPTY_STRING:
csvfield = None
5if csvfield == EMPTY_STRING:
csvfield = None
6""
55____19 if csvfield == EMPTY_STRING:
csvfield = None
9The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : No0
if csvfield == EMPTY_STRING:
csvfield = None
5empty_string = ""
0 empty_string = ""
1The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : No8
if csvfield == EMPTY_STRING:
csvfield = None
4 if csvfield == EMPTY_STRING:
csvfield = None
5The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : No1
The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : No2
The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : No3
The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : No4
The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : No8
if csvfield == EMPTY_STRING:
csvfield = None
4 if csvfield == EMPTY_STRING:
csvfield = None
5The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : No8
The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : No2
if csvfield == EMPTY_STRING:
csvfield = None
4 if csvfield == EMPTY_STRING:
csvfield = None
5The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : Yes22____855
if csvfield == CSV_NONE:
csvfield = None
9 if csvfield == EMPTY_STRING:
csvfield = None
9The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : No0
if csvfield == EMPTY_STRING:
csvfield = None
5empty_string = ""
0 if csvfield == CSV_NONE:
csvfield = None
13The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : No8
if csvfield == EMPTY_STRING:
csvfield = None
4 if csvfield == EMPTY_STRING:
csvfield = None
5The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : No1
The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : No2
The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : No3
The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : No4
The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : No8
if csvfield == EMPTY_STRING:
csvfield = None
4 if csvfield == EMPTY_STRING:
csvfield = None
5The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : No8
The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : No2
Output:
The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : Yes
4 if csvfield == EMPTY_STRING:
csvfield = None
5if csvfield == EMPTY_STRING:
csvfield = None
The zero length string without spaces is empty ? : Yes
The zero length string with just spaces is empty ? : Yes
22____855
9 if csvfield == CSV_NONE:
csvfield = None
9if csvfield == EMPTY_STRING:
csvfield = None
The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : No0
if csvfield == EMPTY_STRING:
csvfield = None
5empty_string = ""
0 if csvfield == CSV_NONE:
csvfield = None
13Python3
if csvfield == CSV_NONE:
csvfield = None
8if csvfield == CSV_NONE:
csvfield = None
9 ""
if csvfield == EMPTY_STRING:
csvfield = None
1if csvfield == CSV_NONE:
csvfield = None
9 if csvfield == EMPTY_STRING:
csvfield = None
3if csvfield == EMPTY_STRING:
csvfield = None
4 if csvfield == EMPTY_STRING:
csvfield = None
5if csvfield == EMPTY_STRING:
csvfield = None
6""
55____19 if csvfield == EMPTY_STRING:
csvfield = None
9The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : No0
if csvfield == EMPTY_STRING:
csvfield = None
5empty_string = ""
0 empty_string = ""
1The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : No8
if csvfield == EMPTY_STRING:
csvfield = None
4 if csvfield == EMPTY_STRING:
csvfield = None
5The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : No1
The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : No2
The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : No3
The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : No4
The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : No8
if csvfield == EMPTY_STRING:
csvfield = None
4 if csvfield == EMPTY_STRING:
csvfield = None
5The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : No8
The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : No2
if csvfield == EMPTY_STRING:
csvfield = None
4 if csvfield == EMPTY_STRING:
csvfield = None
5The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : Yes22____855
if csvfield == CSV_NONE:
csvfield = None
9 if csvfield == EMPTY_STRING:
csvfield = None
9The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : No0
if csvfield == EMPTY_STRING:
csvfield = None
5empty_string = ""
0 if csvfield == CSV_NONE:
csvfield = None
13The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : No8
if csvfield == EMPTY_STRING:
csvfield = None
4 if csvfield == EMPTY_STRING:
csvfield = None
5The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : No1
The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : No2
The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : No3
The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : No4
The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : No8
if csvfield == EMPTY_STRING:
csvfield = None
4 if csvfield == EMPTY_STRING:
csvfield = None
5The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : No8
The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : No2
4 if csvfield == EMPTY_STRING:
csvfield = None
5if csvfield == EMPTY_STRING:
csvfield = None
The zero length string without spaces is empty ? : Yes
The zero length string with just spaces is empty ? : Yes
22____855
9 if csvfield == CSV_NONE:
csvfield = None
9 if csvfield == EMPTY_STRING:
csvfield = None
The zero length string without spaces is empty ? : Yes The zero length string with just spaces is empty ? : Yes
The zero length string without spaces is empty ? : Yes
The zero length string with just spaces is empty ? : No
0if csvfield == EMPTY_STRING:
csvfield = None
5empty_string = ""
0 if csvfield == CSV_NONE:
csvfield = None
13
if csvfield == EMPTY_STRING:
csvfield = None
if csvfield == CSV_NONE:
csvfield = None
Python3
if csvfield == EMPTY_STRING:
csvfield = None
36if csvfield == CSV_NONE:
csvfield = None
9""
Đầu ra: & nbsp; & nbsp;
if csvfield == EMPTY_STRING:
csvfield = None
4if csvfield == EMPTY_STRING:
csvfield = None
51