Đó là thói quen BAD và thực hành ANNOYING khủng khiếp để trích dẫn Joshua Bloch mà không hiểu chủ nghĩa cơ bản cơ bản.
Tôi chưa đọc bất cứ điều gì Joshua Bloch, vì vậy hoặc
- anh ấy là một lập trình viên tồi tệ
- hoặc những người mà tôi tìm thấy trích dẫn anh ta (Joshua là tên của một cậu bé mà tôi đoán) chỉ đơn giản là sử dụng tài liệu của anh ta làm kịch bản tôn giáo để biện minh cho phần mềm tôn giáo của họ.
Như trong chủ nghĩa cơ bản Kinh Thánh, tất cả các luật kinh thánh có thể được tóm tắt bởi
- Yêu bản sắc cơ bản với tất cả trái tim và tất cả tâm trí của bạn
- Yêu hàng xóm như chính mình
và tương tự như vậy chủ nghĩa cơ bản kỹ thuật phần mềm có thể được tóm tắt bởi
- cống hiến hết mình cho các nguyên tắc cơ bản không có căn cứ với tất cả khả năng và tâm trí lập trình của bạn
- và cống hiến cho sự xuất sắc của các lập trình viên của bạn như bạn làm cho chính mình.
Ngoài ra, trong số những người theo chủ nghĩa cơ bản Kinh Thánh, một hệ quả mạnh mẽ và hợp lý được rút ra
- Hãy yêu quý bản thân mình trước. Bởi vì nếu bạn không yêu bản thân mình nhiều, thì khái niệm "yêu người lân cận như chính mình" sẽ không mang nhiều sức nặng, vì "bạn yêu bản thân mình đến mức nào" là dòng chuẩn mực mà bạn sẽ yêu người khác.
Tương tự như vậy, nếu bạn không tôn trọng bản thân như một lập trình viên và chỉ chấp nhận những lời tuyên bố và lời tiên tri của một số bậc thầy lập trình mà KHÔNG đặt câu hỏi về các nguyên tắc cơ bản, thì những trích dẫn và sự phụ thuộc của bạn vào Joshua Bloch (và tương tự) là vô nghĩa. Và do đó, bạn thực sự sẽ không tôn trọng các lập trình viên của bạn.
Các định luật cơ bản của lập trình phần mềm
- lười biếng là đức tính của một lập trình viên giỏi
- bạn phải làm cho cuộc sống lập trình của bạn dễ dàng, lười biếng và do đó hiệu quả nhất có thể
- bạn phải làm cho các hậu quả và các ràng buộc của chương trình của bạn trở nên dễ dàng, lười biếng và do đó hiệu quả nhất có thể đối với các lập trình viên neigbour của bạn, những người làm việc với bạn và nhận các ràng buộc lập trình của bạn.
Hằng số mô hình giao diện là một thói quen xấu ???
Theo luật nào về lập trình cơ bản có hiệu quả và có trách nhiệm thì sắc lệnh tôn giáo này rơi vào?
Chỉ cần đọc bài viết trên wikipedia về các hằng số mẫu giao diện ( https://en.wikipedia.org/wiki/Constant_interface ), và lý do ngớ ngẩn mà nó tuyên bố chống lại các hằng số mẫu giao diện.
Whatif-Không có IDE? Ai trên trái đất là một lập trình viên phần mềm sẽ không sử dụng IDE? Hầu hết chúng ta là những lập trình viên, những người không muốn phải chứng minh rằng mình có chủ nghĩa sinh tồn vô căn cứ, tránh sử dụng IDE.
- Ngoài ra - chờ một người đề xuất thứ hai về lập trình chức năng vi mô như một phương tiện không cần IDE. Đợi cho đến khi bạn đọc lời giải thích của tôi về chuẩn hóa mô hình dữ liệu.
Làm ô nhiễm không gian tên với các biến không được sử dụng trong phạm vi hiện tại? Nó có thể là những người ủng hộ ý kiến này
- không nhận thức được và sự cần thiết phải chuẩn hóa mô hình dữ liệu
Sử dụng các giao diện để thực thi các hằng số là lạm dụng các giao diện. Những người đề xuất như vậy có một thói quen xấu
- không thấy rằng "hằng số" phải được coi là hợp đồng. Và các giao diện được sử dụng để thực thi hoặc dự kiến tuân thủ hợp đồng.
Thật khó nếu không thể chuyển đổi giao diện thành các lớp được triển khai trong tương lai. Hả .... hừm ... ???
- Tại sao bạn muốn tham gia vào mô hình lập trình như vậy là sinh kế bền bỉ của bạn? IOW, tại sao lại cống hiến hết mình cho một thói quen lập trình tồi tệ và tồi tệ như vậy?
Dù lý do là gì đi nữa, KHÔNG CÓ GIẢI QUYẾT GIÁ TRỊ khi nói đến kỹ thuật phần mềm HIỆU QUẢ HIỆU QUẢ để ủy thác hoặc nói chung không khuyến khích việc sử dụng các hằng giao diện.
Không có vấn đề gì về ý định ban đầu và trạng thái tinh thần của những người cha sáng lập đã xây dựng Hiến pháp Hoa Kỳ. Chúng ta có thể tranh luận về ý định ban đầu của những người sáng lập nhưng tất cả những gì tôi quan tâm là những tuyên bố bằng văn bản của Hiến pháp Hoa Kỳ. Và trách nhiệm của mỗi công dân Hoa Kỳ là khai thác chủ nghĩa văn học - chủ nghĩa cơ bản, chứ không phải là ý định sáng lập bất thành văn của Hiến pháp Hoa Kỳ.
Tương tự, tôi không quan tâm ý định "nguyên bản" của những người sáng lập nền tảng Java và ngôn ngữ lập trình có gì cho giao diện. Điều tôi quan tâm là các tính năng hiệu quả mà đặc tả Java cung cấp và tôi dự định khai thác tối đa các tính năng đó để giúp tôi thực hiện các quy tắc cơ bản của lập trình phần mềm có trách nhiệm. Tôi không quan tâm nếu tôi bị coi là "vi phạm ý định cho giao diện". Tôi không quan tâm đến những gì mà Gosling hoặc ai đó Bloch nói về "cách sử dụng Java đúng đắn", trừ khi những gì họ nói không vi phạm nhu cầu của tôi để HIỆU QUẢ hoàn thành các nguyên tắc cơ bản.
Cơ bản là chuẩn hóa mô hình dữ liệu
Việc mô hình dữ liệu của bạn được lưu trữ hoặc truyền đi không quan trọng. Cho dù bạn sử dụng giao diện hay enum hay bất cứ thứ gì, quan hệ hay không có SQL, nếu bạn không hiểu nhu cầu và quy trình chuẩn hóa mô hình dữ liệu.
Trước tiên chúng ta phải xác định và chuẩn hóa mô hình dữ liệu của một tập hợp các quy trình. Và khi chúng ta có một mô hình dữ liệu mạch lạc, CHỈ sau đó chúng ta có thể sử dụng luồng quy trình của các thành phần của nó để xác định hành vi chức năng và xử lý chặn một trường hoặc lĩnh vực ứng dụng. Và chỉ sau đó chúng ta mới có thể xác định API của từng quy trình chức năng.
Ngay cả các khía cạnh của chuẩn hóa dữ liệu theo đề xuất của EF Codd hiện cũng bị thách thức nghiêm trọng và bị thách thức nghiêm trọng. vd IMO, các câu lệnh Codd của EF phải được bỏ hoàn toàn và tập hợp các câu lệnh mới hợp lý hơn về mặt toán học được thiết kế.
Một lỗ hổng to lớn của EF Codd và nguyên nhân dẫn đến sự hiểu biết hiệu quả của con người là niềm tin của anh ta rằng dữ liệu đa chiều, có thể nhận biết được của con người có thể được cảm nhận một cách hiệu quả qua một tập hợp các ánh xạ 2 chiều.
Nguyên tắc cơ bản của chuẩn hóa dữ liệu
Những gì EF Codd không thể hiện.
Trong mỗi mô hình dữ liệu kết hợp, đây là thứ tự tốt nghiệp tuần tự của sự kết hợp mô hình dữ liệu để đạt được.
- Sự thống nhất và danh tính của các trường hợp dữ liệu.
- thiết kế độ chi tiết của từng thành phần dữ liệu, theo đó độ chi tiết của chúng ở mức độ mà mỗi thể hiện của một thành phần có thể được xác định và truy xuất duy nhất.
- không có răng cưa tức là, không có phương tiện tồn tại theo đó một nhận dạng tạo ra nhiều hơn một thể hiện của một thành phần.
- Sự vắng mặt của xuyên âm. Không tồn tại sự cần thiết phải sử dụng một hoặc nhiều phiên bản khác của một thành phần để góp phần xác định một thể hiện của một thành phần.
- Sự thống nhất và bản sắc của các thành phần / kích thước dữ liệu.
- Sự hiện diện của khử răng cưa thành phần. Phải tồn tại một định nghĩa theo đó một thành phần / thứ nguyên có thể được xác định duy nhất. Đó là định nghĩa chính của một thành phần;
- trong đó định nghĩa chính sẽ không dẫn đến việc phơi bày các thứ nguyên phụ hoặc thành phần thành viên không phải là một phần của thành phần dự định;
- Phương tiện độc đáo của thỏa thuận thành phần. Phải tồn tại một và chỉ một, định nghĩa khử răng cưa thành phần như vậy cho một thành phần.
- Có tồn tại một, và chỉ một, giao diện định nghĩa hoặc hợp đồng để xác định một thành phần cha mẹ trong mối quan hệ phân cấp của các thành phần.
- Sự vắng mặt của xuyên âm thành phần. Không tồn tại sự cần thiết phải sử dụng một thành viên của một thành phần khác để góp phần xác định chính xác một thành phần.
- Trong mối quan hệ cha-con như vậy, định nghĩa xác định của cha mẹ không được phụ thuộc vào một phần của tập hợp các thành phần thành viên của trẻ. Thành phần thành viên trong danh tính của cha mẹ phải là danh tính con hoàn chỉnh mà không cần dùng đến việc giới thiệu bất kỳ hoặc tất cả con cái của một đứa trẻ.
- Ưu tiên xuất hiện hai phương thức hoặc đa phương thức của mô hình dữ liệu.
- Khi tồn tại hai định nghĩa ứng cử viên của một thành phần, đó là một dấu hiệu rõ ràng cho thấy tồn tại hai mô hình dữ liệu khác nhau được trộn lẫn thành một. Điều đó có nghĩa là có sự không phù hợp ở cấp mô hình dữ liệu hoặc cấp trường.
- Một lĩnh vực ứng dụng phải sử dụng một và chỉ một mô hình dữ liệu, mạch lạc.
- Phát hiện và xác định đột biến thành phần. Trừ khi bạn đã thực hiện phân tích thành phần thống kê của dữ liệu khổng lồ, bạn có thể không nhìn thấy hoặc thấy sự cần thiết phải điều trị, đột biến thành phần.
- Một mô hình dữ liệu có thể có một số thành phần của nó biến đổi theo chu kỳ hoặc dần dần.
- Chế độ có thể là xoay thành viên hoặc xoay chuyển vị.
- Đột biến luân chuyển thành viên có thể là sự hoán đổi khác biệt giữa các thành phần con giữa các thành phần. Hoặc nơi mà các thành phần hoàn toàn mới sẽ phải được xác định.
- Đột biến chuyển vị sẽ biểu hiện như một thành viên chiều biến đổi thành một thuộc tính, ngược lại.
- Mỗi chu kỳ đột biến phải được xác định là một phương thức dữ liệu riêng biệt.
- Phiên bản hóa từng đột biến. Như vậy bạn có thể lấy ra một phiên bản trước của mô hình dữ liệu, khi có lẽ cần phải xử lý một đột biến 8 năm của mô hình dữ liệu.
Trong một trường hoặc lưới các ứng dụng thành phần liên dịch vụ, phải có một và chỉ một mô hình dữ liệu kết hợp hoặc tồn tại một phương tiện để mô hình dữ liệu / phiên bản tự xác định.
Có phải chúng ta vẫn đang hỏi liệu chúng ta có thể sử dụng Giao diện không? Có thật không ?
Có những vấn đề bình thường hóa dữ liệu bị đe dọa nhiều hơn so với câu hỏi trần tục này. NẾU bạn không giải quyết được những vấn đề đó, sự nhầm lẫn mà bạn nghĩ rằng hằng số giao diện gây ra tương đối không có gì. Zilch.
Từ chuẩn hóa mô hình dữ liệu, sau đó bạn xác định các thành phần là biến, như thuộc tính, là hằng số giao diện hợp đồng.
Sau đó, bạn xác định đi vào giá trị tiêm, giữ chỗ cấu hình thuộc tính, giao diện, chuỗi cuối cùng, v.v.
Nếu bạn phải sử dụng lý do cần xác định vị trí một thành phần dễ dàng hơn để chống lại các hằng số giao diện, điều đó có nghĩa là bạn đang có thói quen xấu là không thực hành chuẩn hóa mô hình dữ liệu.
Có lẽ bạn muốn biên dịch mô hình dữ liệu thành bản phát hành vcs. Rằng bạn có thể lấy ra một phiên bản có thể nhận dạng rõ ràng của mô hình dữ liệu.
Các giá trị được xác định trong các giao diện hoàn toàn được đảm bảo là không thể thay đổi. Và có thể chia sẻ. Tại sao tải một tập hợp các chuỗi cuối cùng vào lớp của bạn từ một lớp khác khi tất cả những gì bạn cần là tập các hằng số đó ??
Vậy tại sao điều này không được công bố một hợp đồng mô hình dữ liệu? Ý tôi là nếu bạn có thể quản lý và bình thường hóa nó một cách mạch lạc, tại sao không? ...
public interface CustomerService {
public interface Label{
char AssignmentCharacter = ':';
public interface Address{
String Street = "Street";
String Unit= "Unit/Suite";
String Municipal = "City";
String County = "County";
String Provincial = "State";
String PostalCode = "Zip"
}
public interface Person {
public interface NameParts{
String Given = "First/Given name"
String Auxiliary = "Middle initial"
String Family = "Last name"
}
}
}
}
Bây giờ tôi có thể tham chiếu các nhãn hợp đồng của ứng dụng của mình theo cách như
CustomerService.Label.Address.Street
CustomerService.Label.Person.NameParts.Family
Điều này gây nhầm lẫn nội dung của các tập tin jar? Là một lập trình viên Java, tôi không quan tâm đến cấu trúc của jar.
Điều này thể hiện sự phức tạp để hoán đổi thời gian chạy động cơ osgi? Osgi là một phương tiện cực kỳ hiệu quả để cho phép các lập trình viên tiếp tục thói quen xấu của họ. Có những lựa chọn thay thế tốt hơn osgi.
Hay tại sao không phải điều này? Không có sự rò rỉ của các Hằng riêng vào hợp đồng được công bố. Tất cả các hằng riêng nên được nhóm vào một giao diện riêng có tên là "Hằng", vì tôi không muốn phải tìm kiếm các hằng và tôi quá lười để gõ liên tục "Chuỗi cuối cùng riêng tư".
public class PurchaseRequest {
private interface Constants{
String INTERESTINGName = "Interesting Name";
String OFFICIALLanguage = "Official Language"
int MAXNames = 9;
}
}
Có lẽ ngay cả điều này:
public interface PurchaseOrderConstants {
public interface Properties{
default String InterestingName(){
return something();
}
String OFFICIALLanguage = "Official Language"
int MAXNames = 9;
}
}
Vấn đề duy nhất với các hằng số giao diện đáng xem xét là khi giao diện được triển khai.
Đây không phải là "ý định ban đầu" của giao diện? Giống như tôi sẽ quan tâm đến "ý định ban đầu" của những người sáng lập trong việc xây dựng Hiến pháp Hoa Kỳ, thay vì Tòa án Tối cao sẽ diễn giải các văn bản của Hiến pháp Hoa Kỳ như thế nào ???
Rốt cuộc, tôi sống ở vùng đất tự do, hoang dã và quê hương của những người dũng cảm. Hãy dũng cảm, tự do, tự nhiên - sử dụng giao diện. Nếu các lập trình viên đồng nghiệp của tôi từ chối sử dụng các phương tiện lập trình hiệu quả và lười biếng, tôi có bị ràng buộc bởi quy tắc vàng để giảm hiệu quả lập trình của mình để phù hợp với họ không? Có lẽ tôi nên, nhưng đó không phải là một tình huống lý tưởng.