มันเป็นนิสัยที่ไม่ดีและเป็นแนวปฏิบัติที่น่ากลัวอย่างมากที่จะพูดถึงโจชัวโบลชโดยไม่เข้าใจพื้นฐานของการยึดติดกับพื้นดินเป็นศูนย์
ฉันยังไม่ได้อ่านอะไรเลย Joshua Bloch เช่นกัน
- เขาเป็นโปรแกรมเมอร์ที่แย่มาก
- หรือผู้คนที่ฉันพบอ้างถึงเขา (โจชัวเป็นชื่อของเด็กชายที่ฉันคิดว่า) กำลังใช้เนื้อหาของเขาเป็นสคริปต์ทางศาสนาเพื่อพิสูจน์ซอฟท์แวร์ของพวกเขา
เช่นเดียวกับในการยึดถือหลักการของคัมภีร์ไบเบิลกฎหมายทั้งหมดในพระคัมภีร์สามารถสรุปได้โดย
- รักอัตลักษณ์พื้นฐานด้วยสุดใจและสุดใจ
- รักเพื่อนบ้านเหมือนรักตนเอง
และการรวมกลุ่มของวิศวกรรมซอฟต์แวร์ในทำนองเดียวกันสามารถสรุปได้โดย
- อุทิศตนให้กับพื้นฐานที่ไร้ดินแดนด้วยโปรแกรมและความคิดทั้งหมดของคุณ
- และอุทิศตนเพื่อความเป็นเลิศของเพื่อนร่วมโปรแกรมของคุณตามที่คุณต้องการด้วยตัวคุณเอง
นอกจากนี้ในกลุ่มผู้นับถือนิกายฟันดาเมนทัลลิสท์ในพระคัมภีร์ไบเบิลมีการพิสูจน์ข้อพิสูจน์ที่แข็งแกร่งและสมเหตุสมผล
- ก่อนอื่นรักตัวเอง เพราะถ้าคุณไม่รักตัวเองมากนักแนวคิด "รักเพื่อนบ้านเหมือนรักตนเอง" ไม่ได้มีน้ำหนักมากเพราะ "คุณรักตัวเองมากแค่ไหน" คือบรรทัดข้อมูลด้านบนที่คุณจะรักคนอื่น
ในทำนองเดียวกันถ้าคุณไม่เคารพตัวเองในฐานะโปรแกรมเมอร์และยอมรับคำประกาศและคำทำนายของผู้เขียนโปรแกรมบางคนโดยไม่ต้องตั้งคำถามพื้นฐานการเสนอราคาและการพึ่งพา Joshua Bloch (และอื่น ๆ ) ก็ไม่มีความหมาย และดังนั้นคุณจะไม่เคารพเพื่อนร่วมโปรแกรมของคุณ
กฎหมายพื้นฐานของการเขียนโปรแกรมซอฟต์แวร์
- ความเกียจคร้านเป็นคุณธรรมของโปรแกรมเมอร์ที่ดี
- คุณต้องทำให้ชีวิตการเขียนโปรแกรมเป็นเรื่องง่ายขี้เกียจและมีประสิทธิภาพเท่าที่จะทำได้
- คุณต้องสร้างผลที่ตามมาและการเขียนโปรแกรมของคุณให้เป็นเรื่องง่ายขี้เกียจและมีประสิทธิภาพมากที่สุดเท่าที่จะเป็นไปได้สำหรับโปรแกรมเมอร์ของคุณที่ทำงานร่วมกับคุณและรับโปรแกรมของคุณ
ค่าคงที่รูปแบบส่วนต่อประสานเป็นนิสัยที่ไม่ดี ???
ภายใต้กฎหมายว่าด้วยการเขียนโปรแกรมที่มีประสิทธิภาพและมีความรับผิดชอบพื้นฐานคำสั่งทางศาสนานี้ตกอยู่ใน?
เพียงอ่านบทความวิกิพีเดียเกี่ยวกับค่าคงที่รูปแบบของอินเทอร์เฟซ ( https://en.wikipedia.org/wiki/Constant_interface ) และข้อแก้ตัวโง่ ๆ ที่ระบุกับค่าคงที่ของรูปแบบอินเทอร์เฟซ
IDE แบบ Whatif-No ใครในโลกในฐานะโปรแกรมเมอร์ซอฟต์แวร์จะไม่ใช้ IDE? พวกเราส่วนใหญ่เป็นโปรแกรมเมอร์ที่ไม่ต้องการพิสูจน์ว่ามีการเอาชีวิตรอดอย่างหลีกเลี่ยงการใช้ IDE
- นอกจากนี้ - รอผู้เสนอที่สองของการเขียนโปรแกรมไมโครฟังก์ชันเป็นวิธีที่ไม่จำเป็นต้องมี IDE รอจนกว่าคุณจะอ่านคำอธิบายของฉันเกี่ยวกับการฟื้นฟูข้อมูลโมเดล
ทำให้เนมสเปซมีตัวแปรที่ไม่ได้ใช้ภายในขอบเขตปัจจุบันหรือไม่ อาจเป็นผู้สนับสนุนความคิดเห็นนี้
- ไม่ได้ตระหนักถึงและความต้องการสำหรับการปรับสภาพแบบจำลองข้อมูล
การใช้อินเทอร์เฟซสำหรับการบังคับใช้ค่าคงที่เป็นการใช้อินเทอร์เฟซที่ไม่เหมาะสม ผู้เสนอดังกล่าวมีนิสัยที่ไม่ดีของ
- ไม่เห็นว่า "ค่าคงที่" จะต้องถือว่าเป็นสัญญา และอินเทอร์เฟซใช้สำหรับบังคับใช้หรือคาดการณ์การปฏิบัติตามสัญญา
เป็นการยากถ้าไม่สามารถแปลงอินเทอร์เฟซเป็นคลาสที่ใช้งานได้ในอนาคต ฮะ .... อืมมม ... ???
- ทำไมคุณต้องการมีส่วนร่วมในรูปแบบของการเขียนโปรแกรมเช่นการทำมาหากินของคุณ? IOW เหตุใดจึงต้องทุ่มเทตัวเองให้เป็นนิสัยในการเขียนโปรแกรม AMBIVALENT และไม่ดี?
ไม่ว่าจะมีข้อแก้ตัวใดก็ตามไม่มีข้อยกเว้นที่ถูกต้องเมื่อพูดถึงวิศวกรรมซอฟต์แวร์ที่มีประสิทธิภาพเป็นพื้นฐานในการมอบหมายหรือโดยทั่วไปไม่สนับสนุนการใช้ค่าคงที่ของอินเทอร์เฟซ
มันไม่สำคัญว่าความตั้งใจดั้งเดิมและสภาวะทางจิตใจของบรรพบุรุษผู้ก่อตั้งผู้สร้างรัฐธรรมนูญของสหรัฐอเมริกาคืออะไร เราสามารถถกเถียงถึงเจตนาดั้งเดิมของบรรพบุรุษผู้ก่อตั้ง แต่สิ่งที่ฉันสนใจก็คือแถลงการณ์ที่เป็นลายลักษณ์อักษรของรัฐธรรมนูญสหรัฐ และมันเป็นความรับผิดชอบของพลเมืองอเมริกันทุกคนที่จะใช้ประโยชน์จากการเขียนวรรณกรรม - ลิทัวเนียที่เป็นลายลักษณ์อักษรไม่ใช่รัฐธรรมนูญที่ไม่ได้รับการก่อตั้ง
ในทำนองเดียวกันฉันไม่สนใจสิ่งที่ "ดั้งเดิม" เจตนาของผู้ก่อตั้งแพลตฟอร์ม Java และภาษาการเขียนโปรแกรมมีสำหรับอินเทอร์เฟซ สิ่งที่ฉันสนใจคือคุณสมบัติที่มีประสิทธิภาพตามข้อกำหนดของ Java และฉันตั้งใจจะใช้ประโยชน์จากคุณลักษณะเหล่านั้นอย่างเต็มที่เพื่อช่วยฉันปฏิบัติตามกฎหมายพื้นฐานของการเขียนโปรแกรมซอฟต์แวร์ที่รับผิดชอบ ฉันไม่สนใจว่าฉันรู้สึกว่า "ละเมิดเจตนาสำหรับส่วนต่อประสาน" ฉันไม่สนใจสิ่งที่ลูกห่านหรือใครบางคน Bloch พูดเกี่ยวกับ "วิธีการใช้งานจาวาที่ถูกต้อง" เว้นแต่ว่าสิ่งที่พวกเขาพูดนั้นไม่ได้ละเมิดความต้องการของฉันในการเติมเต็มพื้นฐานที่มีประสิทธิภาพ
พื้นฐานคือการปรับรูปแบบข้อมูล
ไม่สำคัญว่ารูปแบบข้อมูลของคุณจะโฮสต์หรือส่งข้อมูลอย่างไร ไม่ว่าคุณจะใช้อินเทอร์เฟซหรือ enums หรืออะไรก็ตามความสัมพันธ์หรือ no-SQL ถ้าคุณไม่เข้าใจความต้องการและกระบวนการปรับรูปแบบข้อมูล
ก่อนอื่นเราต้องกำหนดและทำให้ข้อมูลของโมเดลของชุดของกระบวนการเป็นปกติ และเมื่อเรามีรูปแบบข้อมูลที่สอดคล้องกันเท่านั้นเราสามารถใช้ผังกระบวนการของส่วนประกอบในการกำหนดพฤติกรรมการทำงานและกระบวนการบล็อกเขตข้อมูลหรือขอบเขตของการใช้งาน และจากนั้นเราสามารถกำหนด API ของแต่ละกระบวนการทำงานได้
แม้แต่แง่มุมของการทำข้อมูลให้เป็นมาตรฐานตามที่เสนอโดย EF Codd ตอนนี้ถูกท้าทายอย่างรุนแรงและท้าทายอย่างรุนแรง เช่นคำแถลงของเขาเกี่ยวกับ 1NF ถูกวิพากษ์วิจารณ์ว่าคลุมเครือไม่ตรงแนวและเกินความเป็นจริงเช่นเดียวกับคำแถลงที่เหลือของเขาโดยเฉพาะอย่างยิ่งในการให้บริการข้อมูลที่ทันสมัยเทคโนโลยี repo และการส่งผ่าน IMO, งบ EF Codd ควรได้รับการออกแบบอย่างสมบูรณ์และชุดใหม่ของคำสั่งที่มีเหตุผลทางคณิตศาสตร์มากขึ้นได้รับการออกแบบ
ข้อบกพร่องที่เห็นได้ชัดของ EF Codd และสาเหตุของการจัดแนวที่ไม่ตรงกับความเข้าใจของมนุษย์ที่มีประสิทธิภาพคือความเชื่อของเขาที่ว่ามนุษย์สามารถรับรู้ข้อมูลหลายมิติที่ไม่แน่นอนและมิติที่เปลี่ยนแปลงได้
พื้นฐานของการทำข้อมูลให้เป็นมาตรฐาน
สิ่งที่ EF Codd ไม่สามารถแสดงได้
ภายในแต่ละ data-model ที่สอดคล้องกันเหล่านี้คือลำดับของการเชื่อมโยง data-model ที่สำเร็จการศึกษาตามลำดับเพื่อให้บรรลุ
- ความสามัคคีและตัวตนของอินสแตนซ์ข้อมูล
- ออกแบบความละเอียดของส่วนประกอบข้อมูลแต่ละอันโดยที่ความละเอียดของมันอยู่ในระดับที่แต่ละอินสแตนซ์ของส่วนประกอบสามารถระบุและเรียกคืนได้โดยไม่ซ้ำกัน
- ไม่มีนามแฝงของอินสแตนซ์ นั่นคือไม่มีวิธีใดที่การระบุจะสร้างมากกว่าหนึ่งอินสแตนซ์ของส่วนประกอบ
- กรณีที่ไม่มี crosstalk ไม่มีความจำเป็นที่จะต้องใช้อินสแตนซ์อื่นของส่วนประกอบอย่างน้อยหนึ่งรายการเพื่อช่วยในการระบุอินสแตนซ์ของส่วนประกอบ
- ความสามัคคีและตัวตนของส่วนประกอบ / มิติข้อมูล
- การแสดงตนของการลบองค์ประกอบ จะต้องมีอยู่หนึ่งคำจำกัดความที่สามารถระบุองค์ประกอบ / มิติได้โดยไม่ซ้ำกัน ซึ่งเป็นนิยามหลักขององค์ประกอบ;
- โดยที่นิยามหลักจะไม่ส่งผลให้เปิดเผยมิติย่อยหรือส่วนประกอบสมาชิกที่ไม่ได้เป็นส่วนหนึ่งขององค์ประกอบที่ต้องการ
- วิธีการเฉพาะในการจัดการองค์ประกอบ จะต้องมีอยู่หนึ่งรายการและมีเพียงหนึ่งคำจำกัดความของการยกเลิกการใช้ชื่อองค์ประกอบสำหรับองค์ประกอบ
- มีหนึ่งอินเทอร์เฟซนิยามหรือสัญญาเดียวเท่านั้นที่ระบุส่วนประกอบหลักในความสัมพันธ์แบบลำดับชั้นของส่วนประกอบ
- การไม่มี crosstalk ของคอมโพเนนต์ ไม่มีความจำเป็นที่จะต้องใช้สมาชิกขององค์ประกอบอื่นเพื่อสนับสนุนการระบุที่ชัดเจนขององค์ประกอบ
- ในความสัมพันธ์แบบพ่อแม่และลูกคำจำกัดความการระบุตัวของผู้ปกครองจะต้องไม่ขึ้นอยู่กับส่วนหนึ่งของชุดองค์ประกอบสมาชิกของเด็ก องค์ประกอบสมาชิกของตัวตนของผู้ปกครองจะต้องเป็นตัวตนของเด็กที่สมบูรณ์โดยไม่ต้องหันไปอ้างอิงเด็กใด ๆ หรือทั้งหมดของเด็ก
- preempt หน้าสองหรือ modal modal หลายรูปแบบข้อมูล
- เมื่อมีคำจำกัดความของผู้สมัครสองคนที่มีองค์ประกอบมันเป็นสัญญาณที่ชัดเจนว่ามีรูปแบบข้อมูลที่แตกต่างกันสองแบบที่รวมกันเป็นหนึ่ง นั่นหมายความว่าจะมีการเชื่อมโยงกันในระดับรูปแบบข้อมูลหรือระดับฟิลด์
- แอปพลิเคชันของเขตข้อมูลจะต้องใช้หนึ่ง - รูปแบบข้อมูลเดียวอย่างต่อเนื่อง
- ตรวจจับและระบุการกลายพันธุ์ขององค์ประกอบ หากคุณไม่ได้ทำการวิเคราะห์องค์ประกอบทางสถิติของข้อมูลขนาดใหญ่คุณอาจไม่เห็นหรือเห็นความจำเป็นในการรักษาการกลายพันธุ์ขององค์ประกอบ
- รูปแบบข้อมูลอาจมีส่วนประกอบบางส่วนของมันกลายพันธุ์เป็นวัฏจักรหรือค่อยๆ
- โหมดอาจเป็นการหมุนแบบสมาชิกหรือการหมุนวน
- การกลายพันธุ์ของการหมุนของสมาชิกอาจเป็นการสลับสับเปลี่ยนของคอมโพเนนต์ลูกระหว่างคอมโพเนนต์ หรือสถานที่ที่จะต้องมีการกำหนดองค์ประกอบใหม่อย่างสมบูรณ์
- การกลายพันธุ์ของ Transpositional จะแสดงให้เห็นว่าเป็นสมาชิกมิติกลายพันธุ์ในทางกลับกัน
- แต่ละรอบการกลายพันธุ์จะต้องมีการระบุว่าเป็น modal ข้อมูล
- กำหนดเวอร์ชันการกลายพันธุ์แต่ละอัน เช่นนี้คุณสามารถดึงตัวแบบข้อมูลรุ่นก่อนหน้าออกมาเมื่อบางทีความต้องการที่เกิดขึ้นกับการกลายพันธุ์ของตัวแบบข้อมูลอายุ 8 ปี
ในเขตข้อมูลหรือตารางของส่วนประกอบการบริการระหว่างแอปพลิเคชันจะต้องมีรูปแบบข้อมูลที่สอดคล้องกันเพียงหนึ่งรูปแบบเท่านั้นหรือมีวิธีการสำหรับรูปแบบข้อมูล / รุ่นเพื่อระบุตัวเอง
เรายังถามว่าเราสามารถใช้ค่าคงที่ของอินเตอร์เฟสได้หรือไม่? จริงเหรอ
มีปัญหาการปรับมาตรฐานข้อมูลที่เดิมพันเป็นผลสืบเนื่องมากกว่าคำถามทางโลกนี้ หากคุณไม่ได้แก้ปัญหาเหล่านั้นความสับสนที่คุณคิดว่าทำให้ค่าคงที่ของอินเทอร์เฟซนั้นไม่มีค่าอะไรเลย zilch
จากการทำให้เป็นมาตรฐานของข้อมูลแล้วคุณจะพิจารณาว่าส่วนประกอบเป็นตัวแปรเช่นเดียวกับคุณสมบัติของค่าคงที่ของส่วนต่อประสานสัญญา
จากนั้นคุณกำหนดว่าจะเข้าสู่การฉีดค่าการยึดการกำหนดค่าคุณสมบัติอินเทอร์เฟซสตริงสุดท้าย ฯลฯ
หากคุณต้องใช้ข้ออ้างในการค้นหาส่วนประกอบที่ง่ายต่อการกำหนดค่าคงที่ของอินเทอร์เฟซก็หมายความว่าคุณมีนิสัยที่ไม่ดีในการไม่ทำการปรับสภาพข้อมูลแบบจำลอง
บางทีคุณอาจต้องการรวบรวมรูปแบบข้อมูลลงใน vcs release คุณสามารถดึงข้อมูลที่เป็นรูปแบบที่ระบุได้อย่างชัดเจน
ค่าที่กำหนดในอินเทอร์เฟซจะไม่สามารถเปลี่ยนแปลงได้อย่างสมบูรณ์ และสามารถแบ่งปันได้ ทำไมโหลดชุดของสตริงสุดท้ายลงในคลาสของคุณจากคลาสอื่นเมื่อสิ่งที่คุณต้องการคือชุดของค่าคงที่นั้น
เหตุใดจึงไม่เป็นการเผยแพร่สัญญาแบบจำลองข้อมูล ฉันหมายความว่าถ้าคุณสามารถจัดการและทำให้เป็นปกติได้อย่างสอดคล้องกันทำไมไม่ ...
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"
}
}
}
}
ตอนนี้ฉันสามารถอ้างอิงป้ายกำกับที่ทำสัญญาของแอพได้เช่นกัน
CustomerService.Label.Address.Street
CustomerService.Label.Person.NameParts.Family
สิ่งนี้ทำให้เนื้อหาของไฟล์ jar สับสนหรือไม่ ในฐานะโปรแกรมเมอร์ Java ฉันไม่สนใจเกี่ยวกับโครงสร้างของโถ
สิ่งนี้นำเสนอความซับซ้อนในการแลกเปลี่ยนรันไทม์ osgi-motivated? Osgi เป็นวิธีที่มีประสิทธิภาพอย่างมากในการอนุญาตให้โปรแกรมเมอร์ดำเนินการต่อในนิสัยที่ไม่ดีของพวกเขา มีทางเลือกที่ดีกว่า osgi
หรือทำไมไม่เป็นเช่นนี้? ไม่มีการรั่วไหลของค่าคงที่ส่วนตัวลงในสัญญาที่เผยแพร่ ค่าคงที่ส่วนบุคคลทั้งหมดควรจัดกลุ่มเป็นอินเทอร์เฟซส่วนตัวที่ชื่อว่า "ค่าคงที่" เพราะฉันไม่ต้องการค้นหาค่าคงที่และฉันขี้เกียจเกินกว่าจะพิมพ์ "สตริงสุดท้ายส่วนตัว" ซ้ำ ๆ
public class PurchaseRequest {
private interface Constants{
String INTERESTINGName = "Interesting Name";
String OFFICIALLanguage = "Official Language"
int MAXNames = 9;
}
}
บางทีแม้แต่สิ่งนี้:
public interface PurchaseOrderConstants {
public interface Properties{
default String InterestingName(){
return something();
}
String OFFICIALLanguage = "Official Language"
int MAXNames = 9;
}
}
ปัญหาเดียวของค่าคงที่อินเทอร์เฟซที่ควรพิจารณาคือเมื่อใช้งานอินเตอร์เฟส
นี่ไม่ใช่ "เจตนาดั้งเดิม" ของอินเทอร์เฟซใช่ไหม เช่นฉันจะสนใจเกี่ยวกับ "ความตั้งใจดั้งเดิม" ของบรรพบุรุษผู้ก่อตั้งในการกำหนดรัฐธรรมนูญของสหรัฐอเมริกามากกว่าที่ศาลฎีกาจะตีความตัวอักษรที่เป็นลายลักษณ์อักษรของรัฐธรรมนูญสหรัฐหรือไม่?
ท้ายที่สุดฉันอาศัยอยู่ในดินแดนอิสระป่าและบ้านของผู้กล้า จงกล้าหาญจงเป็นอิสระจงใช้อินเตอร์เฟซ หากเพื่อนร่วมโปรแกรมเมอร์ของฉันปฏิเสธที่จะใช้วิธีการเขียนโปรแกรมที่มีประสิทธิภาพและขี้เกียจฉันจำเป็นต้องปฏิบัติตามกฎทองเพื่อลดประสิทธิภาพการเขียนโปรแกรมของฉันเพื่อให้สอดคล้องกับพวกเขาหรือไม่? บางทีฉันควรจะได้ แต่นั่นไม่ใช่สถานการณ์ในอุดมคติ