This kind of code is often called a train wreck because it look like a การแปล - This kind of code is often called a train wreck because it look like a ไทย วิธีการพูด

This kind of code is often called a

This kind of code is often called a train wreck because it look like a bunch of coupled train
cars. Chains of calls like this are generally considered to be sloppy style and should be
avoided [G36]. It is usually best to split them up as follows:
Options opts = ctxt.getOptions();
File scratchDir = opts.getScratchDir();
final String outputDir = scratchDir.getAbsolutePath();
Are these two snippets of code violations
of the Law of Demeter? Certainly
the containing module knows that the
ctxt object contains options, which contain
a scratch directory, which has an
absolute path. That’s a lot of knowledge
for one function to know. The calling
function knows how to navigate through
a lot of different objects.
Whether this is a violation of Demeter depends on whether or not ctxt, Options, and
ScratchDir are objects or data structures. If they are objects, then their internal structure
should be hidden rather than exposed, and so knowledge of their innards is a clear violation
of the Law of Demeter. On the other hand, if ctxt, Options, and ScratchDir are just
data structures with no behavior, then they naturally expose their internal structure, and so
Demeter does not apply.
The use of accessor functions confuses the issue. If the code had been written as follows,
then we probably wouldn’t be asking about Demeter violations.
final String outputDir = ctxt.options.scratchDir.absolutePath;
This issue would be a lot less confusing if data structures simply had public variables
and no functions, whereas objects had private variables and public functions. However,
there are frameworks and standards (e.g., “beans”) that demand that even simple data
structures have accessors and mutators.


0/5000
จาก: -
เป็น: -
ผลลัพธ์ (ไทย) 1: [สำเนา]
คัดลอก!
รหัสชนิดนี้มักเรียกว่าการก่อวินาศกรรมรถไฟเนื่องจากมันมีลักษณะเหมือนพวงของรถไฟคู่รถยนต์ ห่วงโซ่ของการเรียกเช่นนี้โดยทั่วไปจัดเป็นแบบเลอะเทอะ และควรหลีกเลี่ยง [G36] ดีสุดมักจะแยกออกเป็นดังนี้:เลือกที่ตัวเลือก = ctxt.getOptions()ไฟล์ scratchDir = opts.getScratchDir()สุดท้ายสตริ outputDir = scratchDir.getAbsolutePath()มีข้อมูลโค้ดเหล่านี้สองของการละเมิดรหัสของกฎหมายของ Demeter อย่างแน่นอนโมดูลที่มีทราบว่าการวัตถุ ctxt ประกอบด้วยตัวเลือก ซึ่งประกอบด้วยเริ่มต้นไดเรกทอรี ซึ่งมีการเส้นทางสัมบูรณ์ ที่มีจำนวนมากของความรู้สำหรับฟังก์ชันหนึ่งรู้ เรียกทำงานรู้วิธีการนำทางจำนวนมากของวัตถุต่าง ๆว่า เป็นการละเมิดของ Demeter ขึ้นอยู่หรือไม่ ctxt ตัวเลือก และScratchDir เป็นโครงสร้างวัตถุหรือข้อมูล หากพวกเขามีวัตถุ โครงสร้างภายในของพวกเขาควรซ่อน มากกว่าสัมผัส และความรู้ของมิตรเครื่องในของพวกเขาจึง เป็นการละเมิดที่ชัดเจนกฎหมายของ Demeter ในทางกลับกัน ถ้า ctxt ตัวเลือก และ ScratchDir เป็น เพียงข้อมูลโครงสร้าง ด้วยลักษณะการทำงาน แล้วพวกเขาเปิดเผยโครงสร้างภายในอย่างเป็นธรรมชาติ และเพื่อให้Demeter ใช้ไม่การใช้ฟังก์ชันเล็สร้างความสับสนปัญหา ถ้ามีการเขียนรหัสดังนี้แล้ว เราคงจะไม่ได้ถามเกี่ยวกับการละเมิด Demeterสุดท้ายสตริ outputDir = ctxt.options.scratchDir.absolutePathปัญหานี้จะเกิดความสับสนมากน้อยถ้าโครงสร้างข้อมูลก็มีตัวแปรสาธารณะและ ฟังก์ชันไม่ ในขณะที่วัตถุมีตัวแปรและฟังก์ชันสาธารณะ อย่างไรก็ตามมีกรอบและมาตรฐาน (เช่น, "ถั่ว") ที่ต้องการข้อมูลที่เรียบง่ายโครงสร้างมีอิง accessors และ mutators
การแปล กรุณารอสักครู่..
ผลลัพธ์ (ไทย) 2:[สำเนา]
คัดลอก!
ชนิดของรหัสนี้มักจะเรียกว่าซากรถไฟเพราะมันมีลักษณะเหมือนพวงของรถไฟควบคู่
รถยนต์ โซ่ของสายเช่นนี้ได้รับการพิจารณาโดยทั่วไปจะสไตล์เลอะเทอะและควร
หลีกเลี่ยง [G36] มันมักจะเป็นที่ดีที่สุดที่จะแยกพวกเขาขึ้นดังนี้
ตัวเลือก opts ctxt.getOptions = ();
แฟ้ม scratchDir = opts.getScratchDir ();
String สุดท้าย outputDir = scratchDir.getAbsolutePath ();
อยู่ที่ทั้งสองตัวอย่างของการละเมิดรหัส
ของกฎหมายของ Demeter? แน่นอน
โมดูลที่มีรู้ว่า
วัตถุ ctxt มีตัวเลือกซึ่งมี
ไดเรกทอรีรอยขีดข่วนซึ่งมี
เส้นทางที่แน่นอน นั่นเป็นจำนวนมากของความรู้
หนึ่งฟังก์ชั่นที่จะรู้ว่า เรียก
ฟังก์ชั่นรู้วิธีที่จะนำทางผ่าน
จำนวนมากของวัตถุที่แตกต่างกัน.
ไม่ว่าจะเป็นการละเมิด Demeter ขึ้นอยู่กับว่าหรือไม่ ctxt ตัวเลือกและ
ScratchDir เป็นวัตถุหรือโครงสร้างข้อมูล หากพวกเขาเป็นวัตถุแล้วโครงสร้างภายในของพวกเขา
ควรจะซ่อนอยู่มากกว่าสัมผัสและเพื่อให้ความรู้เกี่ยวกับอวัยวะภายในของพวกเขาคือการละเมิดที่ชัดเจน
ของกฎหมายของ Demeter ในทางตรงกันข้ามถ้า ctxt ตัวเลือกและ ScratchDir เป็นเพียง
โครงสร้างข้อมูลที่มีพฤติกรรมไม่แล้วพวกเขาเป็นธรรมชาติเปิดเผยโครงสร้างภายในของพวกเขาและเพื่อให้
Demeter ใช้ไม่ได้.
การใช้ฟังก์ชั่นการเข้าถึงสับสนปัญหา ถ้ารหัสถูกเขียนดังต่อไปนี้
แล้วเราอาจจะไม่ถามเกี่ยวกับการละเมิด Demeter.
String สุดท้าย outputDir = ctxt.options.scratchDir.absolutePath;
ปัญหานี้จะเป็นจำนวนมากทำให้เกิดความสับสนน้อยลงหากโครงสร้างข้อมูลก็มีตัวแปรสาธารณะ
และไม่มีการ ฟังก์ชั่นในขณะที่วัตถุมีตัวแปรส่วนตัวและหน้าที่ของประชาชน อย่างไรก็ตาม
มีกรอบและมาตรฐาน (เช่น "ถั่ว") ที่เรียกร้องให้ข้อมูลง่ายแม้จะ
มีโครงสร้างและ accessors mutators


การแปล กรุณารอสักครู่..
ผลลัพธ์ (ไทย) 3:[สำเนา]
คัดลอก!
รหัสประเภทนี้มักจะเรียกว่าซากรถไฟ เพราะมันดูเหมือนพวกคู่รถไฟรถยนต์ โซ่สายแบบนี้จะพิจารณาโดยทั่วไปจะเป็นแบบมักง่าย และควรหลีกเลี่ยง [ g36 ] มันมักจะดีที่สุดที่จะแยกพวกเขาขึ้นดังนี้ตัวเลือกระวาง = ctxt . getoptions() ;ไฟล์ scratchdir = opts . getscratchdir() ;สุดท้ายสาย outputdir = scratchdir . getabsolutepath() ;นี่คือสองตัวอย่างของการละเมิดรหัสของกฎหมายของคลีฟแลนด์ ? แน่นอนที่ประกอบด้วยโมดูลรู้ว่าctxt วัตถุที่มีตัวเลือกในที่ประกอบด้วยรอยขีดข่วนไดเรกทอรีซึ่งมีเส้นทางสัมบูรณ์ . มันมากของความรู้สำหรับฟังก์ชันหนึ่งรู้ โทรฟังก์ชันที่รู้วิธีที่จะนำทางผ่านมากของวัตถุที่แตกต่างกันว่านี่คือการละเมิดของ Demeter ขึ้นอยู่กับว่าหรือไม่ ctxt , ตัวเลือก , และscratchdir เป็นวัตถุหรือข้อมูลโครงสร้าง ถ้าพวกเขาเป็นวัตถุแล้ว โครงสร้างภายในของพวกเขาน่าจะซ่อนอยู่มากกว่าเปิดเผย ดังนั้นความรู้ของเครื่องในของพวกเขาเป็นละเมิดชัดเจนของกฎหมายของ Demeter . ในทางกลับกัน ถ้า ctxt ตัวเลือก และ scratchdir เป็นเพียงข้อมูลโครงสร้างมีพฤติกรรมไม่แล้วพวกเขาเป็นธรรมชาติเปิดเผยโครงสร้างภายในของพวกเขา และดังนั้นดิมิเตอร์ใช้ไม่ได้การใช้ฟังก์ชันการเข้าถึงสับสนประเด็น ถ้ารหัสถูกเขียนไว้ดังนี้แล้วเราอาจจะไม่ต้องพูดถึง Demeter การละเมิดสิทธิสุดท้ายสาย outputdir = ctxt.options.scratchdir.absolutepath ;ปัญหานี้จะมากน้อยสับสน ถ้าโครงสร้างข้อมูลก็มีตัวแปรสาธารณะและไม่มีหน้าที่ ส่วนวัตถุที่มีตัวแปรส่วนบุคคลและหน้าที่สาธารณะ อย่างไรก็ตามมีกรอบและมาตรฐาน ( เช่น " ถั่ว " ) ที่ความต้องการข้อมูลที่ง่ายแม้และโครงสร้างมี accessors mutators .
การแปล กรุณารอสักครู่..
 
ภาษาอื่น ๆ
การสนับสนุนเครื่องมือแปลภาษา: กรีก, กันนาดา, กาลิเชียน, คลิงออน, คอร์สิกา, คาซัค, คาตาลัน, คินยารวันดา, คีร์กิซ, คุชราต, จอร์เจีย, จีน, จีนดั้งเดิม, ชวา, ชิเชวา, ซามัว, ซีบัวโน, ซุนดา, ซูลู, ญี่ปุ่น, ดัตช์, ตรวจหาภาษา, ตุรกี, ทมิฬ, ทาจิก, ทาทาร์, นอร์เวย์, บอสเนีย, บัลแกเรีย, บาสก์, ปัญจาป, ฝรั่งเศส, พาชตู, ฟริเชียน, ฟินแลนด์, ฟิลิปปินส์, ภาษาอินโดนีเซี, มองโกเลีย, มัลทีส, มาซีโดเนีย, มาราฐี, มาลากาซี, มาลายาลัม, มาเลย์, ม้ง, ยิดดิช, ยูเครน, รัสเซีย, ละติน, ลักเซมเบิร์ก, ลัตเวีย, ลาว, ลิทัวเนีย, สวาฮิลี, สวีเดน, สิงหล, สินธี, สเปน, สโลวัก, สโลวีเนีย, อังกฤษ, อัมฮาริก, อาร์เซอร์ไบจัน, อาร์เมเนีย, อาหรับ, อิกโบ, อิตาลี, อุยกูร์, อุสเบกิสถาน, อูรดู, ฮังการี, ฮัวซา, ฮาวาย, ฮินดี, ฮีบรู, เกลิกสกอต, เกาหลี, เขมร, เคิร์ด, เช็ก, เซอร์เบียน, เซโซโท, เดนมาร์ก, เตลูกู, เติร์กเมน, เนปาล, เบงกอล, เบลารุส, เปอร์เซีย, เมารี, เมียนมา (พม่า), เยอรมัน, เวลส์, เวียดนาม, เอสเปอแรนโต, เอสโทเนีย, เฮติครีโอล, แอฟริกา, แอลเบเนีย, โคซา, โครเอเชีย, โชนา, โซมาลี, โปรตุเกส, โปแลนด์, โยรูบา, โรมาเนีย, โอเดีย (โอริยา), ไทย, ไอซ์แลนด์, ไอร์แลนด์, การแปลภาษา.

Copyright ©2025 I Love Translation. All reserved.

E-mail: