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

10
ตรงกันข้ามกับการเริ่มต้น (หรือ init) คืออะไร? [ปิด]
คำนี้จะใช้เป็นชื่อเมธอด วิธีการนี้ถูกเรียกเมื่อส่วนหนึ่งของส่วนต่อประสานผู้ใช้ถูกซ่อน (หรือลบออก) และใช้เพื่อรีเซ็ตค่าเป็นค่าเริ่มต้นและกำจัดวัตถุที่จะไม่ใช้อีกต่อไป ชื่อที่เป็นไปได้คือ: ปลดปล่อยลบทิ้งล้าง ฯลฯ คุณคิดว่าอันไหนที่เหมาะสมที่สุด?

5
ฉันควรเริ่มต้น C structs ผ่านพารามิเตอร์หรือโดยค่าตอบแทน? [ปิด]
บริษัท ที่ฉันทำงานอยู่นั้นกำลังเริ่มต้นโครงสร้างข้อมูลทั้งหมดผ่านฟังก์ชันเตรียมใช้งานเช่น: //the structure typedef struct{ int a,b,c; } Foo; //the initialize function InitializeFoo(Foo* const foo){ foo->a = x; //derived here based on other data foo->b = y; //derived here based on other data foo->c = z; //derived here based on other data } //initializing the structure Foo foo; InitializeFoo(&foo); …

2
ทำไมสวิฟต์ไม่ต้องใช้เครื่องหมายอัฒภาค? [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว ปกติฉันเขียนโค้ดใน c # หรือ Objective-C และเมื่อเร็ว ๆ นี้ฉันได้เรียนรู้ภาษาการเขียนโปรแกรมใหม่ของ Apple - Swift สิ่งแรกที่ฉันสังเกตเห็นคือคุณไม่จำเป็นต้องเพิ่มเครื่องหมายอัฒภาคเพื่อจบบรรทัดใน Swift แต่ถ้าคุณทำอย่างน้อยจากสิ่งที่ฉันทดสอบ - มันไม่รบกวนคอมไพเลอร์ เมื่อฉันเขียน: int someNumber = 0; ใน Objective-C เครื่องหมายอัฒภาคจะบอกโปรแกรมว่าบรรทัดนั้นสิ้นสุดลงและจะไม่ผ่านไปยังบรรทัดถัดไป ด้วย Swift ฉันสามารถประกาศตัวแปรด้วย var someNumber:Int = 5 และไม่เพิ่มเซมิโคลอนและระบบรู้ว่านี่คือจุดสิ้นสุดของบรรทัด อะไรทำให้บางภาษาทำสิ่งนี้และคนอื่น ๆ ไม่ได้? ทำไมไม่เก็บระบบที่เป็นรูปแบบเดียวกันของการเพิ่มเครื่องหมายอัฒภาคไว้ที่ท้าย?

3
มันเป็นการดีที่จะกำหนดตัวแปรภายในวงหรือไม่? [ปิด]
ปิด คำถามนี้ต้องการรายละเอียดหรือความคมชัด ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ เพิ่มรายละเอียดและชี้แจงปัญหาโดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว ผู้สอนของฉันเคยบอกฉันว่าฉันไม่ควรกำหนดตัวแปรภายในลูปแต่ฉันก็ยังคงไม่เข้าใจว่าทำไม อะไรคือข้อเสียของสิ่งนั้น? มีร่างกายใดสามารถอธิบายสิ่งนั้นให้ฉันได้บ้าง

1
มันเป็นเรื่องปกติไหมที่จะใช้ตัวสร้างปริยาย
ถามเฉพาะเกี่ยวกับตัวสร้างเริ่มต้น ระบุว่าตัวสร้างเริ่มต้นข้อมูลทั้งหมดสำหรับวัตถุถ้าฉันสร้างคลาสที่ไม่สามารถใช้โดยไม่ต้องเริ่มต้นที่เหมาะสมมันไม่ใช่กรณีที่นวกรรมิกเริ่มต้นไม่มีประโยชน์หรือไม่ พิจารณา: // A class for handling lines in a CSV file class CSV_Entry { private: unsigned num_entries; std::string string_version; std::vector<std::string> vector_version; ...etc public: CSV_Entry(); CSV_Entry(const std::string& src_line); // returns a vector copy of the original entry std::vector<std::string> get_vector_snapshot(); } int main( void ) { ...etc CSV_Entry example = …

6
วิธีเขียน constructors ที่อาจไม่สามารถสร้างอินสแตนซ์ของวัตถุได้อย่างถูกต้อง
บางครั้งคุณต้องเขียนนวกรรมิกซึ่งอาจล้มเหลว เช่นสมมติว่าฉันต้องการยกตัวอย่างวัตถุที่มีเส้นทางไฟล์สิ่งที่ต้องการ obj = new Object("/home/user/foo_file") ตราบใดที่พา ธ ชี้ไปยังไฟล์ที่เหมาะสมทุกอย่างก็เรียบร้อย แต่ถ้าสตริงไม่ใช่เส้นทางที่ถูกต้องสิ่งที่ควรทำลาย แต่อย่างไร คุณสามารถ: โยนข้อยกเว้น คืนค่า null object (หากภาษาการเขียนโปรแกรมของคุณอนุญาตให้ constructors ส่งคืนค่า) ส่งคืนวัตถุที่ถูกต้อง แต่มีธงระบุว่าเส้นทางของมันไม่ได้ตั้งอย่างถูกต้อง (ugh) คนอื่น ๆ ? ฉันคิดว่า "แนวปฏิบัติที่ดีที่สุด" ของภาษาการเขียนโปรแกรมต่างๆจะใช้สิ่งนี้แตกต่างกัน เช่นฉันคิดว่า ObjC ชอบ (2) แต่จะไม่สามารถนำไปใช้ใน C ++ ได้ซึ่งตัวสร้างจะต้องมีค่าเป็นโมฆะเป็นชนิดส่งคืน ในกรณีนี้ฉันใช้ (1) ใช้ ในภาษาการเขียนโปรแกรมที่คุณเลือกคุณสามารถแสดงวิธีจัดการกับปัญหานี้และอธิบายว่าทำไม

5
เวลาเริ่มต้นของเว็บแอปพลิเคชันนั้นสำคัญจริง ๆ หรือไม่
มีการสนทนากับใครบางคนเกี่ยวกับการเพิ่มรหัสเริ่มต้นในการเริ่มต้นแอปพลิเคชันและเขาบ่นเกี่ยวกับสิ่งนั้นทำให้เวลาเริ่มต้นเพิ่มขึ้น เขาไม่สามารถระบุเหตุผลได้จริง ๆ (ความรู้สึกหรืออะไรที่ไม่รู้) นี่ไม่ใช่แอปพลิเคชันที่ใช้งานหนักและเริ่มประมาณหนึ่งนาทีหรือมากกว่านั้นเราปรับใช้สองสามครั้งต่อปี ฉันจำได้ว่าอ่านคำแนะนำดังกล่าวเกี่ยวกับคำถามเกี่ยวกับ SO ดังนั้นเมื่อเร็ว ๆ นี้ผู้คนแนะนำให้เริ่มต้นเมื่อเริ่มต้นแทนการเข้าถึงหน้าด้วยการประทับตรา "ถ้าคุณสามารถจ่ายค่าปรับ" ได้ ฉันทำงานกับเว็บแอพที่เริ่มต้นจาก 30 วินาทีถึง 4-5 นาที แต่เมื่อออนไลน์พวกเขาก็สั่นสะเทือน แล้วฉันจะพลาดอะไรไป? ถ้ามันเป็นแอพพลิเคชั่นที่สำคัญอย่างเช่น ... ฉันไม่รู้ ... สำหรับตลาดการเงินแอพพลิเคชั่นทางการแพทย์การสำรวจอวกาศและอื่น ๆ มันสำคัญจริง ๆ หรือไม่ที่เวลาเริ่มต้น ป.ล. ฉันหมายถึงเว็บแอปอย่างเคร่งครัดแอปเดสก์ท็อปถูกผูกไว้เพื่อเริ่มต้นอย่างรวดเร็ว

2
วิธีปฏิบัติที่ดีที่สุดสำหรับการเริ่มต้นสมาชิกคลาสใน php
ฉันมีรหัสจำนวนมากเช่นนี้ในตัวสร้างของฉัน: - function __construct($params) { $this->property = isset($params['property']) ? $params['property'] : default_val; } มันจะดีกว่าที่จะทำเช่นนี้แทนที่จะระบุค่าเริ่มต้นในการกำหนดคุณสมบัติ? คือpublic $property = default_valอะไร บางครั้งมีตรรกะสำหรับค่าเริ่มต้นและค่าเริ่มต้นบางอย่างมาจากคุณสมบัติอื่นซึ่งเป็นสาเหตุที่ฉันทำเช่นนี้ในตัวสร้าง ฉันควรใช้ตัวตั้งค่าเพื่อแยกตรรกะทั้งหมดสำหรับค่าเริ่มต้นหรือไม่

7
ความสำคัญคือการเริ่มต้นตัวแปร
การกำหนดค่าเริ่มต้นสำคัญอย่างไร การเริ่มต้นที่เหมาะสมหลีกเลี่ยงการรั่วไหลของหน่วยความจำหรือมีข้อได้เปรียบด้านประสิทธิภาพหรือไม่?

4
ที่วัตถุใน CQRS + ES ควรเริ่มต้นอย่างสมบูรณ์: ในตัวสร้างหรือเมื่อใช้เหตุการณ์แรก?
ดูเหมือนจะมีข้อตกลงอย่างกว้างขวางในชุมชน OOP ที่ตัวสร้างคลาสไม่ควรปล่อยให้วัตถุบางส่วนหรือไม่เตรียมการอย่างเต็มที่ ฉันหมายถึงอะไรโดย "การเริ่มต้น"? ประมาณพูดที่อะตอมกระบวนการที่จะนำวัตถุที่สร้างขึ้นใหม่ในสภาพที่ทั้งหมดของค่าคงที่ระดับนี้ถือเป็น มันควรเป็นสิ่งแรกที่เกิดขึ้นกับวัตถุ (ควรเรียกใช้เพียงครั้งเดียวต่อวัตถุ) และไม่ควรอนุญาตสิ่งใด ๆ ให้จับวัตถุที่ยังไม่ได้เริ่มต้น (ดังนั้นคำแนะนำบ่อยครั้งในการดำเนินการเริ่มต้นวัตถุในคลาส Constructor ด้วยเหตุผลเดียวกันInitializeวิธีการที่มักจะขมวดคิ้วเมื่อเหล่านี้แตกอะตอมและทำให้เป็นไปได้ที่จะได้รับและใช้วัตถุที่ยังไม่ได้ อยู่ในสถานะที่กำหนดไว้อย่างดี) ปัญหา:เมื่อรวม CQRS กับการจัดหาเหตุการณ์ (CQRS + ES) ซึ่งการเปลี่ยนแปลงสถานะทั้งหมดของวัตถุถูกจับในชุดลำดับเหตุการณ์ (กระแสเหตุการณ์) ที่สั่งไว้ฉันสงสัยว่าเมื่อวัตถุมาถึงสถานะเริ่มต้นเต็มที่: ในตอนท้ายของตัวสร้างคลาสหรือหลังจากเหตุการณ์แรกถูกนำไปใช้กับวัตถุหรือไม่ หมายเหตุ:ฉันไม่ต้องการใช้คำว่า "มวลรวมราก" หากคุณต้องการให้แทนที่เมื่อใดก็ตามที่คุณอ่าน "วัตถุ" ตัวอย่างสำหรับการอภิปราย:สมมติว่าแต่ละวัตถุมีการระบุIdค่าทึบแสงบางอย่าง(คิดว่า GUID) กระแสเหตุการณ์ที่เป็นตัวแทนของการเปลี่ยนแปลงสถานะของวัตถุนั้นสามารถระบุได้ในที่เก็บเหตุการณ์ด้วยIdค่าเดียวกัน: (ไม่ต้องกังวลเกี่ยวกับลำดับเหตุการณ์ที่ถูกต้อง) interface IEventStore { IEnumerable<IEvent> GetEventsOfObject(Id objectId); } สมมติต่อไปว่ามีสองประเภทวัตถุและCustomer ShoppingCartมามุ่งเน้นที่ShoppingCart: เมื่อสร้างแล้วตะกร้าสินค้านั้นว่างเปล่าและต้องเชื่อมโยงกับลูกค้าหนึ่งราย บิตสุดท้ายนั้นเป็นค่าคงที่ของคลาส: ShoppingCartวัตถุที่ไม่เกี่ยวข้องกับ a Customerอยู่ในสถานะที่ไม่ถูกต้อง ใน OOP แบบดั้งเดิมเราอาจทำแบบนี้ในตัวสร้าง: …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.