คำถามติดแท็ก namespace

เนมสเปซเป็นคุณลักษณะภาษาของภาษาโปรแกรมหลายภาษาทำให้สามารถใช้ชื่อคลาสและตัวแปรซ้ำได้

4
ทำไมเนมสเปซมากมายเริ่มต้นด้วย com
ฉันสังเกตเห็นว่า บริษัท จำนวนมากใช้เนมสเปซ "ชื่อโดเมนย้อนกลับ" และฉันอยากรู้ว่าการฝึกฝนนั้นมาจากที่ใดและทำไมมันถึงดำเนินต่อไป มันเป็นเพียงการดำเนินการต่อเนื่องจากการฝึกท่องจำหรือมีแนวคิดสถาปัตยกรรมที่โดดเด่นที่ฉันอาจหายไปที่นี่หรือไม่? นอกจากนี้ยังทราบคำถามเช่น: https://stackoverflow.com/questions/189209/do-you-really-use-your-reverse-domain-for-package-naming-in-javaที่เรียงลำดับคำถามของฉัน แต่ไม่ใช่ 100 % (ถ้ามันทำให้คุณรู้สึกดีขึ้นฉันอยากรู้จริงๆว่าฉันควรจะใช้มันสำหรับความพยายามในการกำหนดชื่อ javascript ของฉัน แต่ฉันอยากรู้มากขึ้นเกี่ยวกับตอนนั้นและทำไมและนั่นคือสิ่งที่จะช่วยแนะนำฉันเกี่ยวกับคำตอบจาวาสคริปต์ คุณ: "หน้าต่าง") ตัวอย่างของการฝึกนี้ขยายไปถึงโฟลเดอร์และไฟล์:

6
ทำไม“ การมีเพศสัมพันธ์อย่างแน่นหนาระหว่างฟังก์ชั่นและข้อมูล” ไม่ดี?
ฉันพบข้อความนี้ใน " ความสุขของ Clojure " บนหน้า 32 แต่มีบางคนพูดสิ่งเดียวกันกับฉันในมื้อค่ำเมื่อสัปดาห์ที่แล้วและฉันก็ได้ยินที่อื่นเช่นกัน: [A] ข้อเสียของการเขียนโปรแกรมเชิงวัตถุคือการมีเพศสัมพันธ์อย่างแน่นหนาระหว่างฟังก์ชั่นและข้อมูล ฉันเข้าใจว่าเหตุใดการเชื่อมต่อที่ไม่จำเป็นจึงไม่ดีในแอปพลิเคชัน นอกจากนี้ฉันรู้สึกสบายใจที่จะบอกว่าควรหลีกเลี่ยงสถานะและการสืบทอดที่ไม่แน่นอนแม้ในการเขียนโปรแกรมเชิงวัตถุ แต่ฉันล้มเหลวที่จะเห็นว่าทำไมการติดฟังก์ชั่นในชั้นเรียนจึงไม่ดีอย่างแท้จริง ฉันหมายถึงการเพิ่มฟังก์ชั่นในชั้นเรียนดูเหมือนว่าจะติดแท็กเมลใน Gmail หรือติดไฟล์ในโฟลเดอร์ เป็นเทคนิคขององค์กรที่ช่วยให้คุณค้นพบอีกครั้ง คุณเลือกเกณฑ์บางอย่างจากนั้นรวบรวมสิ่งต่าง ๆ เข้าด้วยกัน ก่อน OOP โปรแกรมของเรามีวิธีการมากมายในไฟล์ ฉันหมายความว่าคุณต้องใส่ฟังก์ชั่นบางแห่ง ทำไมไม่จัดระเบียบพวกเขา? หากนี่เป็นการโจมตีแบบ veiled ในประเภททำไมพวกเขาถึงไม่พูดว่าการ จำกัด ประเภทของอินพุตและเอาต์พุตไปยังฟังก์ชันนั้นผิด ฉันไม่แน่ใจว่าฉันจะเห็นด้วยกับเรื่องนี้หรือไม่ แต่อย่างน้อยฉันก็คุ้นเคยกับข้อโต้แย้งอย่างมืออาชีพและความปลอดภัยในการพิมพ์ ฟังดูเป็นเรื่องที่ฉันกังวลเป็นส่วนใหญ่ แน่นอนว่าบางครั้งผู้คนเข้าใจผิดและวางการทำงานผิดประเภท แต่เมื่อเทียบกับข้อผิดพลาดอื่น ๆ ดูเหมือนว่าจะเป็นความไม่สะดวกเล็กน้อย ดังนั้น Clojure มีเนมสเปซ การผสานฟังก์ชันกับคลาสใน OOP แตกต่างจากการผสานฟังก์ชันในเนมสเปซใน Clojure ได้อย่างไรและทำไมมันจึงไม่ดี โปรดจำไว้ว่าฟังก์ชั่นในชั้นเรียนไม่จำเป็นต้องทำงานกับสมาชิกของคลาสนั้นเสมอไป ดูที่ java.lang.StringBuilder - ทำงานกับประเภทการอ้างอิงใด …

5
แนวทางปฏิบัติที่ดีที่สุดสำหรับการใช้เนมสเปซใน C ++ [ปิด]
ฉันได้อ่านClean Codeของลุงบ็อบเมื่อสองสามเดือนที่ผ่านมาและมันมีผลกระทบอย่างลึกซึ้งต่อวิธีการเขียนโค้ดของฉัน แม้ว่าดูเหมือนว่าเขาจะทำซ้ำสิ่งที่โปรแกรมเมอร์ทุกคนควรรู้การรวมพวกเขาทั้งหมดเข้าด้วยกันและนำพวกเขาไปสู่การปฏิบัติจะส่งผลให้มีโค้ดที่สะอาดกว่ามาก โดยเฉพาะอย่างยิ่งฉันพบว่าการแบ่งฟังก์ชั่นขนาดใหญ่ออกเป็นฟังก์ชั่นขนาดเล็กจำนวนมากและการแบ่งคลาสขนาดใหญ่เป็นคลาสจิ๋วจำนวนมากเพื่อให้มีประโยชน์อย่างเหลือเชื่อ ตอนนี้สำหรับคำถาม ตัวอย่างของหนังสือมีทั้งหมดใน Java ขณะที่ฉันทำงานใน C ++ เป็นเวลาหลายปีที่ผ่านมา แนวคิดในClean Codeจะขยายไปถึงการใช้เนมสเปซซึ่งไม่มีอยู่ใน Java ได้อย่างไร (ใช่ฉันรู้เกี่ยวกับแพ็คเกจ Java แต่มันไม่เหมือนกันจริงๆ) มันสมเหตุสมผลไหมที่จะใช้แนวคิดในการสร้างเอนทิตีเล็ก ๆ จำนวนมากแต่ละอันมีหน้าที่กำหนดอย่างชัดเจนสำหรับเนมสเปซ กลุ่มเล็ก ๆ ของคลาสที่เกี่ยวข้องควรถูกห่อในเนมสเปซหรือไม่? นี่เป็นวิธีการจัดการความซับซ้อนของการมีคลาสเล็ก ๆ จำนวนมากหรือค่าใช้จ่ายในการจัดการเนมสเปซมากมายเป็นสิ่งต้องห้ามหรือไม่? แก้ไข: คำถามของฉันเป็นคำตอบในเรื่องนี้รายการวิกิพีเดียเกี่ยวกับแพคเกจหลักการ
38 design  c++  namespace 

4
C # namespace และแบบแผนการตั้งชื่อคลาสสำหรับไลบรารี
ฉันกำลังสร้างห้องสมุดที่มีฟังก์ชั่นยูทิลิตี้ขนาดเล็กใน C # และพยายามตัดสินใจเกี่ยวกับเนมสเปซและการตั้งชื่อคลาส องค์กรปัจจุบันของฉันเป็นเช่นนี้: Company Company.TextUtils public class TextUtils {...} Company.MathsUtils public class MathsUtils {...} public class ArbitraryPrecisionNumber {...} public class MathsNotation {...} Company.SIUnits public enum SISuffixes {...} public class SIUnits {...} นี่เป็นวิธีที่ดีในการจัดระเบียบเนมสเปซและคลาสหรือมีวิธีที่ดีกว่านี้หรือไม่? โดยเฉพาะดูเหมือนว่ามีชื่อเดียวกันในเนมสเปซและชื่อคลาส (เช่นCompany.TextUtilsเนมสเปซและTextUtilsคลาส) เป็นเพียงการทำซ้ำและแสดงให้เห็นว่ารูปแบบอาจดีกว่า
26 c#  naming  namespace 

4
ทำไมเราต้องมี URIs สำหรับเนมสเปซ XML
ฉันกำลังพยายามหาสาเหตุที่เราต้องการ URIs สำหรับเนมสเปซ XML และฉันไม่สามารถหาจุดประสงค์ได้ ทุกคนสามารถเพิ่มสีสันให้ฉันเล็กน้อยแสดงการใช้ของพวกเขาในตัวอย่างที่เป็นรูปธรรม? แก้ไข: ตกลงเช่น: ฉันมีสิ่งนี้จาก w3schools <root xmlns:h="http://www.w3.org/TR/html4/" xmlns:f="http://www.w3schools.com/furniture"> <h:table> <h:tr> <h:td>Apples</h:td> <h:td>Bananas</h:td> </h:tr> </h:table> <f:table> <f:name>African Coffee Table</f:name> <f:width>80</f:width> <f:length>120</f:length> </f:table> </root> ดังนั้นสิ่งที่ควรhttp://www.w3schools.com/furnitureถือ
23 xml  namespace 

5
การใช้คลาสสแตติกเป็นเนมสเปซ
คำถามนี้ถูกโยกย้ายจาก Stack Overflow เพราะสามารถตอบได้ใน Software Engineering Stack Exchange อพยพ 8 ปีที่ผ่านมา ฉันเห็นผู้พัฒนารายอื่นใช้คลาสคงที่เป็นเนมสเปซ public static class CategoryA { public class Item1 { public void DoSomething() { } } public class Item2 { public void DoSomething() { } } } public static class CategoryB { public class Item3 { public void DoSomething() …

1
ข้อดีและข้อเสียของ namespaces vs รวม / ต้องการใน PHP?
ฉันเพิ่งเริ่มใช้ namespaces ใน PHP เมื่อฉันเห็นพวกเขาครั้งแรกฉันคิดว่าไวยากรณ์ของพวกเขาน่าเกลียดและฉันจะไม่ใช้มัน อย่างไรก็ตามฉันสร้าง autoloader (spl_autoload_register) ที่สร้างขึ้นเพื่อที่ฉันจะได้ไม่ต้องเขียนคำสั่ง include / ต้องการอีกครั้ง ฉันชอบเนมสเปซ แต่มีประโยชน์วัตถุประสงค์กว่ารวม / ต้องการงบหรือว่าพวกเขาเป็นวิธีเดียวกันเพื่อบรรลุเป้าหมายเดียวกันหรือไม่
20 php  namespace 

4
ชื่อแพคเกจที่เหมาะสมมีความหมายมากกว่า `ใช้ 'สำหรับสิ่งต่อไปนี้?
ในฐานะชาวฟางพิจารณาแพคเกจjava.utilมันเป็นพื้นทิ้งสำหรับชั้นเรียนต่างๆที่ในกรณีส่วนใหญ่ไม่แบ่งปันอะไรกันมากกว่าคนที่ทำให้พวกเขามีขี้เกียจหรือไม่มีปฏิภาณที่จะเกิดขึ้นกับชื่อแพคเกจที่ถูกต้องเชิงความหมายสำหรับชั้นเรียนของพวกเขา เป็นตัวอย่างหนึ่ง แต่ให้ชั้นเรียนUUIDชื่อแพคเกจที่ถูกต้องทางความหมายสำหรับคลาสนั้นคืออะไร? ฉันกำลังทำงานUUIDเพื่อทำให้ชั้นเรียนของฉันมีน้ำหนักเบาขึ้น ฉันไม่ต้องการใช้me.myproject.util.UUIDสำหรับชื่อแพ็คเกจ ผมถือว่าแต่ที่ไม่ได้หมายความความหมายของการใช้me.myproject.rfc4122.UUIDUUID ฉันก็คิดเช่นกันme.myproject.uuid.UUIDแต่ฉันไม่ชอบคำซ้ำซากในที่นั้นแม้ว่าจะเป็นวิธีที่นิยมใน Python ที่จะนำคลาสในโมดูลที่มีชื่อเดียวกันและpackagesใน Java นั้นไม่เทียบเท่ากับmodulesใน Python ฉันยังพิจารณาme.myproject.UUIDแต่ปฏิเสธเพราะฉันไม่ต้องการสร้างมลภาวะเป็นส่วนหนึ่งของเนมสเปซกับสิ่งที่ไม่เกี่ยวข้อง นี่แค่ยกระดับปัญหาขึ้น ฉันพิจารณาด้วยเช่นกันme.myproject.lib.UUIDแต่นี่ไม่มีความหมายเชิงความหมายมากไปกว่า.utilและเพียงแค่เปลี่ยนชื่อปัญหา semanticsสาขาวิชาภาษาศาสตร์และตรรกะที่เกี่ยวข้องกับความหมาย

4
ใช้ `use` ใน C ++ หรือหลีกเลี่ยง
การลดความหมายที่แตกต่างกันอย่างละเอียดเนื่องจาก ADL ฉันควรใช้โดยทั่วไปusingอย่างไรและเพราะเหตุใด มันขึ้นอยู่กับสถานการณ์ (เช่นส่วนหัวซึ่งจะเป็น#included กับไฟล์ต้นฉบับที่จะไม่)? นอกจากนี้ฉันควรจะชอบ::std::หรือstd::? ระดับเนมสเปซusing namespace: using namespace std; pair<string::const_iterator, string::const_iterator> f(const string &s) { return make_pair(s.begin(), s.end()); } ชัดเจนอย่างสมบูรณ์: std::pair<std::string::const_iterator, std::string::const_iterator> f(const std::string &s) { return std::make_pair(s.begin(), s.end()); } ระดับเนมสเปซโดยใช้การประกาศ: using std::pair; using std::string; pair<string::const_iterator, string::const_iterator> f(const string &s) { return make_pair(s.begin(), s.end()); } ฟังก์ชั่นท้องถิ่นประกาศใช้: std::pair<std::string::const_iterator, …
17 c++  namespace 

1
หลักการตั้งชื่อสำหรับโครงการโอเพ่นซอร์ส iOS / OSX
ไม่เสมอไป แต่ส่วนใหญ่คุณจะพบโครงการโอเพ่นซอร์ส iOS หรือ Mac OS X ที่มีชื่อขึ้นต้นด้วยตัวอักษรเริ่มต้นของชื่อและนามสกุลของผู้แต่ง NLMyProjectหากเป็นโครงการที่ได้รับจะได้รับการประพันธ์โดยนิคเลอบลังโครงการจะได้รับการอ่านเป็น ตัวอย่าง: RMSwipeTableViewCellโดย Rune Madsen EBCardCollectionViewLayoutโดย Ezequiel Becerra, SDiPhoneVersionโดย Sebastian Dobrincu LNNotificationsUIโดย Leo Natan สิ่งนั้นมาจากไหน มีคนคนหนึ่งเขียนด้วยวิธีนี้ก่อนจากนั้นคนอื่นตามมา ฉันไม่สามารถหาอะไรเกี่ยวกับมันแม้จะอยู่ในหลักเกณฑ์ของแอปเปิ้ล เป็นสำนวนที่เขียนได้ทุกที่หรือไม่?

2
ทำไมต้องใช้ typedefs สำหรับ structs
ใน C (ANSI, C99 ฯลฯ ) structs อาศัยอยู่ในเนมสเปซของตนเอง struct สำหรับรายการที่เชื่อมโยงอาจมีลักษณะเช่นนี้: struct my_buffer_type { struct my_buffer_type * next; struct my_buffer_type * prev; void * data; }; ดูเหมือนว่าเป็นเรื่องที่ค่อนข้างเป็นธรรมชาติ แต่สำหรับโปรแกรมเมอร์ C ส่วนใหญ่จะพิมพ์ struct เหล่านั้นโดยอัตโนมัติดังต่อไปนี้ typedef struct tag_buffer_type { struct tag_buffer_type * next; struct tag_buffer_type * prev; void * data; } my_buffer_type; และจากนั้นอ้างอิง struct …

1
การประเมินเนมสเปซ PHP
ฉันอยู่ในช่วงเปิดตัวโครงการ PHP โอเพนซอร์สซึ่งฉันหวังว่าจะถูกใช้โดยผู้พัฒนารายอื่นในโครงการของตนเอง โครงการไม่รองรับ namespaces ในปัจจุบันและฉันพยายามประเมินว่าควรใช้ namespaces หรือแบบแผนการตั้งชื่อ PEAR ของ Dir_Subdir_Class ซึ่งดูเหมือนว่าจะได้รับประโยชน์ทางเทคนิคเดียวกันทั้งหมดโดยไม่มีข้อเสีย ความซื่อสัตย์ไม่ใช่ทางเลือกที่ง่าย บางจุดของการพิจารณากับ namespaces: อีกวิธีหนึ่งที่โครงการของฉันพยายามสร้างความแตกต่างด้วยการจัดทำ API ที่ง่ายกว่าโครงการที่คล้ายกันอื่น ๆ เนื่องจากเนมสเปซเป็นของใหม่และเพราะมันซับซ้อนกว่าแบบแผนการตั้งชื่อ PEAR การแนะนำให้ใช้ใน codebase จะทำให้โครงการของฉันใช้งานได้ง่ายขึ้น ด้วยการใช้พวกเขาทำให้สูญเสียความแตกต่างในแง่ของความง่ายในการใช้งาน ในขณะที่ฉันเห็นประโยชน์บางประการต่อ namespaces พวกเขาดูเหมือนจะไม่สามารถแก้ปัญหาที่ต้องแก้ไขในผลิตภัณฑ์ PHP ที่ทันสมัยซึ่งใช้หลักการตั้งชื่อ PEAR ความขัดแย้งของการตั้งชื่อในขณะที่ใช้โครงการของฉันควรน้อยที่สุดหากไม่มีอยู่จริง นี้บทความให้ฉันหยุดบางส่วนในการนำ namespaces การดำเนินการของพวกเขาได้รับน้อยกว่าที่เป็นตัวเอก ฉันยังลังเลที่จะกระโดดขึ้นไปบนเกวียนที่ไม่สามารถไปได้ทุกที่ เนื่องจากเนมสเปซเป็นฟีเจอร์ใหม่สำหรับ PHP ฉันยังไม่มั่นใจว่ามันจะกลายเป็นมาตรฐาน ความเข้ากันได้ โค้ด PHP เกือบทั้งหมดที่เคยเขียนไม่ได้ใช้เนมสเปซเพราะเป็นคุณสมบัติใหม่ ห้องสมุดอื่น ๆ จะเข้ากันไม่ได้หากไม่มีการแปลง บางจุดสำหรับการใช้เนมสเปซ: ความเข้าใจ หากเนมสเปซกลายเป็นมาตรฐานและเป็นแนวปฏิบัติที่ดีที่สุดโครงการของฉันอาจถูกมองว่าไม่เป็นมืออาชีพและล้าสมัยอย่างรวดเร็วหากไม่มีพวกเขา การแข่งขัน …
11 php  namespace 

1
globals แบบคงที่และเนมสเปซที่ไม่ระบุชื่อใน C ++
เหตุใด C ++ จึงสร้างความแตกต่างระหว่างสถิตแบบคงที่ (การเชื่อมโยงภายใน) และสัญลักษณ์ในเนมสเปซที่ไม่มีชื่อ (การเชื่อมโยงภายนอก แต่ไม่มีวิธีการอ้างถึงจากภายนอกอย่างไรก็ตาม) เหตุผลเหล่านี้ยังคงใช้ได้หรือมีเหตุผลใหม่หรือไม่? มีสถานที่ใดบ้างที่ยังคงแตกต่างกันไป แต่ต้องมีกฎเกณฑ์ที่สหภาพนิรนามทั่วโลก (หรือขอบเขตของเนมสเปซ)staticที่ไม่ระบุชื่อและต้องเป็นอะไร สำหรับคะแนนโบนัสหากไม่มีเหตุผลดีๆที่ทำให้พวกเขาแตกต่างกันมีการขอให้เทียบเท่าหรือไม่? เมื่อ C ++ แนะนำเนมสเปซ (C ++ 98) และเนมสเปซที่ไม่มีชื่อโดยเฉพาะรูปทรงแบบคงที่ถูกเลิกใช้แล้วล้าสมัยและด้อยกว่าสิ่งใหม่ในความกระตือรือร้นแม้ว่ามันจะถูกเปลี่ยนกลับด้วย C ++ 11 : การ คัดค้านคำสำคัญ ... ไม่มาก ก่อน C ++ 11 สัญลักษณ์ที่มีการเชื่อมโยงภายในไม่สามารถใช้เป็นอาร์กิวเมนต์ของเทมเพลต: ทำไม C ++ 03 จึงต้องการให้พารามิเตอร์เทมเพลตมีการเชื่อมโยงภายนอก

4
จำนวนคลาสในเนมสเปซ - กลิ่นรหัส?
ฉันมีไลบรารี C # ที่ใช้งานได้หลายอย่าง มีเนมสเปซอยู่สองสามอันในห้องสมุดและฉันเพิ่งสังเกตว่าหนึ่งเนมสเปซมีคลาสค่อนข้างน้อย ฉันมักจะหลีกเลี่ยงการมีคลาสมากเกินไปในเนมสเปซเดียวเนื่องจากการจัดหมวดหมู่และเนื่องจากจิตใต้สำนึกฉันคิดว่ามันดู "สวยกว่า" เพื่อมีลำดับชั้นของเนมสเปซลึกกว่า คำถามของฉันคือ: ไม่มีใครคิดว่ามันเป็น "กลิ่นรหัส" เมื่อ namespace มีหลายชั้น - แม้ว่าชั้นเรียนที่เกี่ยวข้องกับแต่ละอื่น ๆ ? คุณจะใช้ความพยายามอย่างมากในการค้นหาความแตกต่างในคลาสที่อนุญาตให้มีการจัดหมวดหมู่ย่อยหรือไม่?
11 c#  count  namespace 

2
ฉันจะเพิ่มการกำหนดเนมสเปซ PHP ในไลบรารีบางส่วนโดยไม่ทำให้รหัสที่มีอยู่เสียหายได้อย่างไร
บริษัท ของฉันสร้างกรอบ PHP แบบแยกส่วนในช่วงหลายปีที่ผ่านมาเริ่มต้นนานก่อนที่ PHP จะเพิ่มเนมสเปซ 5.3 เมื่อเร็ว ๆ นี้เราตัดสินใจที่จะเริ่มใช้เนมสเปซในรหัสใหม่ของห้องสมุด อย่างไรก็ตามเรามีปัญหาเล็ก ๆ น้อย ๆ ที่เราพยายามหาว่าการเพิ่มเนมสเปซลงในโค้ดเบส pre-v5.3 นั้นไม่ใช่ความคิดที่ดีหรือไม่: ฉันสามารถเนมสเปซคลาส แต่ยังอิมพอร์ต (ใช้) โกลบอลเนมสเปซเพื่อให้คลาสโกลบอลทั้งหมดไม่ต้องการ\คำนำหน้าได้หรือไม่? หากเรากำหนดคลาสที่มีอยู่ในห้องสมุดของเราเราจะป้องกันไม่ให้โครงการที่มีอยู่ทั้งหมดแตกหักทันทีที่การอัพเกรดเฟรมเวิร์ก ตัวอย่างเช่นไลบรารีสามารถเปลี่ยนชื่อของคลาสThemeEngineเป็น\module\theme\ThemeEngineแต่เว็บไซต์ที่มีอยู่โทรออกThemeEngineโดยไม่มีการแก้ไขรหัสใด ๆ ถ้าเป็นเช่นนั้นรหัสนั้นจะเป็นอย่างไร
10 php  namespace 

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.