cuốn sách gpt4 ai đã làm

Tôi đang thực hiện CR trong một nhà máy lớn - tại sao nên sử dụng bảng liệt kê để thay thế các giá trị Boolean?

In lại Tác giả: Sahara Thời gian cập nhật: 2024-10-16 02:18:59 59 4
mua khóa gpt4 Nike

Việc sử dụng bảng liệt kê để thay thế các giá trị Boolean chủ yếu dựa trên các lý do sau: ● Dễ đọc ● Khả năng mở rộng ● Phòng ngừa và kiểm soát bảo mật.

khả năng đọc được

Chúng ta sẽ định nghĩa một kiểu boolean (true hoặc false) làm tham số của phương thức. đôi khi ý nghĩa của các thông số thường không đủ rõ ràng, gây trở ngại cho việc đọc.

Ví dụ: một tham số có thể biết "có nên bật một chức năng định nghĩa tối đa hay không", nhưng ý nghĩa thực sự của nó là không có thể được nhìn thấy trong mắt flash bằng cách nhìn đúng và sai:

setDisable(false): Tắt hay bật--! setInvalid(false): Nó không hợp lệ hoặc hợp lệ--!

Tin tôi đi, cách diễn đạt “đi vòng” “phủ định kép” điều này chắc chắn sẽ tiêu tốn một ít tế bào não của bạn trong một thời gian :) Tất nhiên bạn có thể nói: “Đừng sử dụng danh từ phủ định”, thay thế bằng “biểu thức trực tiếp”, setEnable (true ), trò chuyện nhìn có thể nhận ra rằng nó đã được bật, điều này rất trực quan; Đúng như vậy, nhưng trong hơn 10 năm sự nghiệp quá trình của mình, tôi tin rằng mình đã gặp phải setDisable(false) vô số lần; Đoạn code sau dành cho bạn Có thể "nhìn một cái là biết" tham số đó là đúng Nó có nghĩa là gì?

public static void main(String[] args) { Convert("12.3456", 2, true); } /** * * @param value * @paramscale * @param EnableHalfUp Có cần làm tròn hay không* @return */ public static String ConvertToValue(String value, intscale, boolean allowHalfUp) { if (enableHalfUp){ //"Làm tròn" chuỗi thành một có giá trị phân tích số vị trí được xác định chỉ định khác{ //"Cắt ngắn" chuỗi thành một giá trị có phân tích số vị trí được thu thập chỉ định} }

Tất nhiên, IDE hiện nay có những thủ thuật tốt hơn, nhưng ở góc độ "dễ đọc" thì bạn chỉ có thể đi vào định nghĩa định nghĩa phương thức và nhìn vào các chú thích để hiểu nó. Khi các tham số được giải mã, bạn có thể biết từng tham số loại boolean đại diện cho cái gì không?

chuyển đổi ("12.3456", 2, đúng, sai, đúng, sai, đúng);

Đây là một câu hỏi bổ sung. Mu Wange đã tham gia phát triển iOS trong một khoảng thời gian. sẽ áp dụng định dạng trực tuyến hơn và có thể bao gồm nhiều tham số tên "tường thuật tuyến tính" để cải thiện khả năng đọc. như được hiển thị bên dưới: [NSString stringWithCString:"something" allowASCIIStringEncoding:true] .

Trở lại với ngôn ngữ OC, liên hệ với vấn đề này, chúng ta hãy xem JDK được thiết kế như thế nào.

public static void main(String[] args) { BigDecimal value = new BigDecimal("12.34567"); // Làm tròn đến hai chữ thập BigDecimal roundValue = value.setScale(2, RoundingMode.HALF_UP );

Bạn đã tìm thấy nó chưa? bạn đã nhìn thấy: RoundingMode.HALF_UP, bạn có thể biết ngay rằng cần phải làm tròn mà không cần phải xem điều này làm tăng khả năng. khả năng đọc, đồng thời xác định danh sách và hỗ trợ mở rộng nhiều tiện ích hơn. giới thiệu ngay bên dưới: khả năng mở rộng;

Khả năng mở rộng

Nếu cần thêm nhiều trạng thái hơn trong tương lai, việc sử dụng boolean sẽ bị hạn chế ở chế độ mở rộng công việc.

Ví dụ: if hiện tại có hai trạng thái: bật (bật) và tắt (tẮT) và cần thêm trạng thái chờ trong tương lai thì việc sử dụng sử dụng boolean không đủ linh hoạt. sử dụng boolean để hiện các chức năng:

public void configureFeature(boolean Enable) { if (enable) { // Kích hoạt tính năng } else { // Tắt tính năng } }

Sử dụng danh sách bảng để hiển thị các chức năng trạng thái:

public enum FeatureMode { ENABLED, DISABLED, MAINTENANCE } public void configureFeature(FeatureMode mode) { switch (mode) { case ENABLED: // Bật tính năng trường hợp case case DISABLED: // Tắt tính năng MAINTENANCE: // Duy trì trạng thái thái độ break; default: Throw IllegalArgumentException new ("Chế độ không xác định: " + mode);

an toàn loại

Việc sử dụng lớp bao bọc Boolean không chính xác có thể gây ra ngoại lệ con trỏ null;.

Trước tiên hãy để tôi hỏi một câu: Lớp đóng gói Boolean có bao nhiêu "giá trị"? Boolean.TRUE và Boolean.FALSE nhưng đừng quên, it cũng có thể là null;

Một lỗi trực tuyến được sử dụng không chính xác trong một số trường hợp, điều này có thể gây ra con trỏ ngoại lệ null. về Boolean và có mã dòng hàng:

public static void main(String[] args) { if (checkIfMatched("Dummy")){ System.out.println("matched"); } } /** * Một phương thức cực kỳ phức hợp trong hệ thống cũ, with row tổng của dòng * @param str * @return */ public static Boolean checkIfMatched(String str) { Booleanmatched // Giả sử rằng có: xử lý logic phức tạp ở đây, tạm thời sử dụng giả sử if; ("Dummy".equals(str)) { match = true } else { match = false } trả về match }

Hiện tại không có vấn đề gì, nhưng khi hàm tiếp tục lặp lại, tốc độ phức tạp cũng tăng mạnh trong một công cụ nhánh có thể, nếu không được phép gán cho Boolean thì ít nhất sẽ không có lỗi nào được báo cáo trong quá trình biên dịch:

public static void main(String[] args) { if (checkIfMatched("Dummy")) { System.out.println("matched"); } } /** * Một phương thức cực kỳ phức hợp trong hệ thống cũ, with row lớp của dòng * * @param str * @return */ public static Boolean checkIfMatched(String str) { Booleanmatched = null; // Giả sử có: logic ở đây, tạm thời sử dụng giả vì if ("Dummy".equals(str)) { //Mô phỏng: Khi mã phát triển, có thể có các vấn đề không được chỉ định phù hợp if (false) {matched = true; } } khác {khớp = sai }

Lúc này, mối nguy hiểm đang thầm thở vào. Nếu ngược dòng sử dụng phương thức sau để phán đoán các điều kiện, hãy xem xét liệu có vấn đề gì không?

if (checkIfMatched("Dummy")) { System.out.println("matched" }

Trước hết, sẽ không có lỗi biên dịch ở đây, nhưng điều kiện nếu ở đây sẽ tự động bỏ hộp và will be got outException NullPointerException for null value;.

Tóm tắt nhỏ

Nhìn lại: “Trong trường hợp nào, nên sử dụng bảng liệt kê để thay thế Boolean giá trị”, tôi nghĩ nó phụ thuộc vào năng lực mức độ biến đổi của các hàm để đánh giá toàn diện: “Càng dễ dàng thay đổi thì càng ít cho phép các mức độ phức tạp khác nhau thì nó càng phải hội tụ ở một nơi, hãy tưởng tượng nếu thay đổi tiếp theo đối với phương pháp Boolean là đánh giá Mu Wange only đang loại bỏ một số giá trị.

Cuối cùng, bài viết này về việc tôi thực hiện CR trong một máy chủ lớn - tại sao nên sử dụng bảng danh sách để thay thế các giá trị Boolean ở đây. Kích hoạt. Tôi hy vọng bạn sẽ ủng hộ blog của tôi trong tương lai!

59 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress