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

การออกแบบระดับสูงและคำอธิบายของระบบซอฟต์แวร์ การออกแบบสถาปัตยกรรมกลั่นรายละเอียดของการใช้งานอัลกอริทึมและการแสดงข้อมูลเพื่อมุ่งเน้นการโต้ตอบของส่วนประกอบ "กล่องดำ"

30
ฉันจะสร้างภาษาการเขียนโปรแกรมของตัวเองและคอมไพเลอร์ได้อย่างไร [ปิด]
ฉันถี่ถ้วนกับการเขียนโปรแกรมและได้เจอภาษาต่างๆเช่นภาษาเบสิกภาษาฟอร์แทรนภาษาโคบอล LISP โลโก้ Java, C ++, C, MATLAB, Mathematica, Python, Ruby, Perl, JavaScript, Assembly เป็นต้น ฉันไม่เข้าใจว่าผู้คนสร้างภาษาการเขียนโปรแกรมและประดิษฐ์คอมไพเลอร์อย่างไร ฉันยังไม่เข้าใจว่าผู้คนสร้างระบบปฏิบัติการเช่น Windows, Mac, UNIX, DOS และอื่น ๆ อย่างไร สิ่งอื่น ๆ ที่ลึกลับสำหรับฉันคือวิธีที่ผู้คนสร้างห้องสมุดเช่น OpenGL, OpenCL, OpenCV, Cocoa, MFC และอื่น ๆ สิ่งสุดท้ายที่ฉันไม่สามารถเข้าใจได้ก็คือวิธีที่นักวิทยาศาสตร์คิดค้นภาษาแอสเซมบลีและแอสเซมเบลอร์สำหรับไมโครโปรเซสเซอร์ ฉันอยากจะเรียนรู้สิ่งเหล่านี้ทั้งหมดและฉันอายุ 15 ปี ฉันมักจะต้องการเป็นนักวิทยาศาสตร์คอมพิวเตอร์ที่ชอบ Babbage, Turing, Shannon หรือ Dennis Ritchie ฉันได้อ่านหนังสือการออกแบบคอมไพเลอร์ของ Aho แล้วและแนวคิดระบบปฏิบัติการของ Tanenbaum และพวกเขาทั้งหมดพูดถึงแนวคิดและรหัสในระดับสูงเท่านั้น …

17
การเพิ่มประสิทธิภาพก่อนวัยอันควรเป็นรากฐานของความชั่วทั้งหมดหรือไม่?
เพื่อนร่วมงานของฉันในวันนี้มุ่งมั่นที่เรียกว่าคลาสThreadLocalFormatซึ่งโดยทั่วไปจะย้ายอินสแตนซ์ของคลาส Java Format ลงในเธรดโลคัลเนื่องจากพวกเขาไม่ได้เป็นเธรดที่ปลอดภัยและ "ค่อนข้างแพง" ในการสร้าง ฉันเขียนการทดสอบอย่างรวดเร็วและคำนวณว่าฉันสามารถสร้างอินสแตนซ์ 200,000 ครั้งต่อวินาทีถามเขาว่าเขาสร้างสิ่งนั้นมากมายซึ่งเขาตอบว่า เขาเป็นโปรแกรมเมอร์ที่ยอดเยี่ยมและทุกคนในทีมมีทักษะสูงดังนั้นเราจึงไม่มีปัญหาในการทำความเข้าใจโค้ดผลลัพธ์ แต่ก็ชัดเจนว่าเป็นกรณีของการปรับให้เหมาะสมเมื่อไม่มีความต้องการจริง เขาสำรองรหัสตามคำขอของฉัน คุณคิดอย่างไร? นี่เป็นกรณีของ "การเพิ่มประสิทธิภาพก่อนวัยอันควร" หรือไม่และจริง ๆ แล้วมันแย่ขนาดไหน?

16
เมื่อใช้หลักการความรับผิดชอบเดี่ยวสิ่งใดที่ถือว่าเป็น“ ความรับผิดชอบ?”
ดูเหมือนชัดเจนว่า "หลักการความรับผิดชอบเดี่ยว" ไม่ได้หมายความว่า "ทำเพียงสิ่งเดียวเท่านั้น" นั่นคือวิธีการที่ใช้ public Interface CustomerCRUD { public void Create(Customer customer); public Customer Read(int CustomerID); public void Update(Customer customer); public void Delete(int CustomerID); } บ็อบมาร์ตินกล่าวว่า "คลาสควรมีเหตุผลเดียวเท่านั้นที่จะเปลี่ยนแปลง" แต่นั่นเป็นเรื่องยากที่จะทำให้คุณคิดมากหากคุณเป็นโปรแกรมเมอร์ใหม่สำหรับ SOLID ฉันเขียนคำตอบสำหรับคำถามอื่นที่ฉันแนะนำว่าความรับผิดชอบเป็นเหมือนชื่องานและเต้นไปรอบ ๆ หัวเรื่องโดยใช้อุปมาอุปไมยในร้านอาหารเพื่ออธิบายประเด็นของฉัน แต่นั่นก็ไม่ได้เป็นชุดของหลักการที่บางคนสามารถใช้เพื่อกำหนดความรับผิดชอบของชั้นเรียนของพวกเขา แล้วคุณจะทำอย่างไร คุณจะกำหนดความรับผิดชอบอย่างไรในแต่ละชั้นเรียนและคุณกำหนดความรับผิดชอบอย่างไรในบริบทของ SRP

10
อะไรคือข้อดีของรูปแบบ endian เล็ก ๆ น้อย ๆ ?
โปรเซสเซอร์ของ Intel (และอื่น ๆ ) อาจใช้รูปแบบ endian เล็กน้อยสำหรับการจัดเก็บ ฉันมักจะสงสัยว่าทำไมบางคนต้องการเก็บไบต์ในลำดับที่กลับกัน รูปแบบนี้มีข้อดีมากกว่ารูปแบบ endian ใหญ่หรือไม่

17
เป็นการดีกว่าที่จะส่งคืนค่า NULL หรือค่าว่างจากฟังก์ชัน / เมธอดที่ไม่มีค่าส่งคืนใช่หรือไม่
ฉันกำลังมองหาคำแนะนำที่นี่ ฉันกำลังดิ้นรนกับว่ามันจะดีกว่าที่จะกลับเป็นโมฆะหรือค่าที่ว่างเปล่าจากวิธีการเมื่อไม่มีค่าตอบแทนหรือไม่สามารถหาได้ ใช้สองวิธีต่อไปนี้เป็นตัวอย่าง: string ReverseString(string stringToReverse) // takes a string and reverses it. Person FindPerson(int personID) // finds a Person with a matching personID. ในReverseString()ฉันจะพูดกลับสตริงที่ว่างเปล่าเพราะประเภทกลับเป็นสตริงดังนั้นผู้โทรคาดหวังว่า ด้วยวิธีนี้ผู้โทรจะไม่ต้องตรวจสอบเพื่อดูว่ากลับเป็นโมฆะ ในการFindPerson()คืนค่า NULL ดูเหมือนว่าเหมาะสมดีกว่า ไม่ว่า NULL หรือวัตถุ Person ว่างเปล่า ( new Person()) จะถูกส่งคืนหรือไม่ผู้โทรจะต้องตรวจสอบเพื่อดูว่าวัตถุบุคคลนั้นว่างเปล่าหรือว่างเปล่าก่อนที่จะทำอะไรกับมัน (เช่นการโทรUpdateName()) ดังนั้นทำไมไม่เพียงแค่ส่งคืนค่า NULL ที่นี่จากนั้นผู้โทรต้องตรวจสอบค่า NULL เท่านั้น ใครบ้างที่ต่อสู้กับสิ่งนี้? ความช่วยเหลือหรือข้อมูลเชิงลึกใด ๆ ที่ชื่นชม

9
มีเหตุผล "ของจริง" ที่ไม่ชอบการสืบทอดหลายครั้งหรือไม่
ฉันชอบความคิดที่ว่าจะมีหลายมรดกที่สนับสนุนในภาษา ส่วนใหญ่มักจะลืมมันโดยเจตนาและ "การแทนที่" ที่ควรจะเป็นอินเตอร์เฟส การเชื่อมต่อก็ไม่ได้ครอบคลุมการสืบทอดหลาย ๆ อันเหมือนกันทั้งหมดและข้อ จำกัด นี้บางครั้งอาจนำไปสู่รหัสสำเร็จรูปมากขึ้น เหตุผลพื้นฐานเดียวที่ฉันเคยได้ยินเรื่องนี้คือปัญหาเพชรกับชั้นเรียนพื้นฐาน ฉันไม่สามารถยอมรับได้ สำหรับฉันมันหลุดออกมามากมายเช่น "เอาละมันเป็นไปได้ที่จะพลาดมันดังนั้นมันจึงเป็นความคิดที่ไม่ดีโดยอัตโนมัติ" คุณสามารถทำอะไรผิดพลาดในภาษาการเขียนโปรแกรมและฉันหมายถึงอะไร ฉันไม่สามารถทำสิ่งนี้ได้อย่างจริงจังอย่างน้อยก็ไม่ใช่โดยไม่ต้องอธิบายให้ละเอียด เพียงตระหนักถึงปัญหานี้ 90% ของการต่อสู้ นอกจากนี้ฉันคิดว่าฉันได้ยินบางสิ่งบางอย่างเมื่อหลายปีก่อนเกี่ยวกับวัตถุประสงค์ทั่วไปที่เกี่ยวข้องกับอัลกอริทึม "ซองจดหมาย" หรืออะไรทำนองนั้น (เสียงกริ่งดังขึ้นทุกคนหรือไม่) ปัญหาเกี่ยวกับเพชรปัญหาของแท้ที่ฉันอาจนึกได้คือถ้าคุณพยายามใช้ห้องสมุดบุคคลที่สามและไม่เห็นว่าสองคลาสที่ไม่เกี่ยวข้องกันดูเหมือนว่าในห้องสมุดนั้นมีคลาสพื้นฐานร่วมกัน แต่นอกเหนือไปจาก เอกสารคุณสมบัติของภาษาที่ง่ายอาจทำให้คุณต้องการประกาศความตั้งใจในการสร้างข้าวหลามตัดก่อนที่จะทำการรวบรวมเพชรให้คุณ ด้วยคุณสมบัติเช่นนี้การสร้างเพชรใด ๆ ก็อาจเป็นการจงใจไม่ประมาทหรือเพราะไม่มีใครรู้ถึงความผิดพลาดนี้ เพื่อให้ทุกคนพูดว่า ... มีเหตุผลจริงหรือที่คนส่วนใหญ่เกลียดชังมรดกหลายอย่างหรือว่ามันเป็นเพียงแค่กลุ่มฮิสทีเรียที่ก่อให้เกิดอันตรายมากกว่าดี? มีบางอย่างที่ฉันไม่เห็นใช่ไหม ขอขอบคุณ. ตัวอย่าง รถขยาย WheeledVehicle, KIASpectra ขยายรถยนต์และอิเล็กทรอนิกส์ KIASpectra มีวิทยุ เหตุใด KIASpectra จึงไม่มี Electronic เพราะมันเป็นอิเล็กทรอนิกส์ การสืบทอดกับการจัดองค์ประกอบควรเป็นความสัมพันธ์แบบ is-a กับความสัมพันธ์แบบ a-a เพราะมันเป็นอิเล็กทรอนิกส์ …

8
คำติชมและข้อเสียของการฉีดพึ่งพา
การฉีดพึ่งพา (DI) เป็นรูปแบบที่รู้จักกันดีและทันสมัย วิศวกรส่วนใหญ่ทราบถึงข้อดีของมันเช่น: ทำให้การแยกในการทดสอบหน่วยเป็นไปได้ / ง่าย การกำหนดการขึ้นต่อกันของคลาสอย่างชัดเจน ยกตัวอย่างเช่นการออกแบบที่ดี ( หลักการความรับผิดชอบเดี่ยว (SRP)) เปิดใช้งานการสลับการใช้งานอย่างรวดเร็ว ( DbLoggerแทนที่จะConsoleLoggerเป็นตัวอย่าง) ฉันคิดว่ามีฉันทามติอุตสาหกรรมที่ DI เป็นรูปแบบที่ดีมีประโยชน์ ไม่มีการวิจารณ์มากเกินไปในขณะนี้ ข้อเสียที่กล่าวถึงในชุมชนมักจะน้อย บางส่วนของพวกเขา: เพิ่มจำนวนคลาส สร้างอินเตอร์เฟสที่ไม่จำเป็น ขณะนี้เราหารือเกี่ยวกับการออกแบบสถาปัตยกรรมกับเพื่อนร่วมงานของฉัน เขาค่อนข้างอนุรักษ์นิยม แต่เปิดใจ เขาชอบตั้งคำถามกับสิ่งต่าง ๆ ซึ่งฉันคิดว่าดีเพราะหลาย ๆ คนในวงการไอทีแค่คัดลอกเทรนด์ล่าสุดทำซ้ำข้อดีและโดยทั่วไปแล้วไม่คิดมากเกินไป - อย่าวิเคราะห์ลึกเกินไป สิ่งที่ฉันต้องการถามคือ: เราควรใช้การฉีดพึ่งพาเมื่อเรามีเพียงหนึ่งการดำเนินการ? เราควรห้ามการสร้างวัตถุใหม่ยกเว้นภาษา / กรอบงานหรือไม่? การฉีดความคิดที่ไม่ดีในการนำไปใช้งานเพียงครั้งเดียว (สมมติว่าเรามีการนำไปใช้เพียงครั้งเดียวดังนั้นเราจึงไม่ต้องการสร้างอินเทอร์เฟซ "ว่างเปล่า") ถ้าเราไม่ได้วางแผนทดสอบหน่วยเฉพาะชั้นเรียนหรือไม่

10
อย่าใช้“ คงที่” ใน C # หรือ
ฉันส่งใบสมัครที่ฉันเขียนถึงสถาปนิกคนอื่นเพื่อตรวจสอบรหัส หนึ่งในนั้นเกือบจะเขียนฉันทันทีและพูดว่า "อย่าใช้" คงที่ "คุณไม่สามารถเขียนการทดสอบอัตโนมัติด้วยคลาสและวิธีการคงที่" คงที่ "คือการหลีกเลี่ยง" ฉันตรวจสอบและ 1/4 ของชั้นเรียนของฉันถูกทำเครื่องหมายว่า "คงที่" ฉันใช้สแตติกเมื่อฉันจะไม่สร้างอินสแตนซ์ของคลาสเนื่องจากคลาสเป็นคลาสโกลบอลเดี่ยวที่ใช้ตลอดโค้ด เขาพูดถึงบางสิ่งที่เกี่ยวข้องกับการเยาะเย้ยเทคนิค IOC / DI ที่ไม่สามารถใช้กับรหัสคงที่ได้ เขาบอกว่ามันน่าเสียดายที่ห้องสมุดบุคคลที่สามเป็นแบบคงที่เนื่องจากไม่สามารถตรวจสอบได้ สถาปนิกรายนี้ถูกต้องหรือไม่? ปรับปรุง: นี่คือตัวอย่าง: APIManager - คลาสนี้เก็บพจนานุกรมของ API ของบุคคลที่สามที่ฉันกำลังโทรหาพร้อมกับเวลาที่อนุญาตต่อไป มันบังคับใช้ข้อ จำกัด การใช้ API ที่บุคคลที่ 3 จำนวนมากมีอยู่ในเงื่อนไขการให้บริการ ฉันใช้มันทุกที่ที่ฉันกำลังเรียกบริการของบุคคลที่สามโดยเรียก Thread.Sleep (APIManager.GetWait ("ProviderXYZ")); ก่อนโทรออก ทุกอย่างในที่นี้เป็นเธรดที่ปลอดภัยและใช้งานได้ดีกับ TPL ใน C #

5
แนวทางของ async / ไม่ใช้งานการรอคอยใน C # ขัดแย้งกับแนวคิดของสถาปัตยกรรมที่ดีและการฝังรากลึกนามธรรม?
คำถามนี้เกี่ยวกับภาษา C # แต่ฉันคาดหวังให้ครอบคลุมภาษาอื่นเช่น Java หรือ TypeScript Microsoft แนะนำแนวทางปฏิบัติที่ดีที่สุดในการใช้การโทรแบบอะซิงโครนัสใน. NET ในบรรดาคำแนะนำเหล่านี้เรามาเลือกสองข้อ: เปลี่ยนลายเซ็นของเมธอด async เพื่อให้ส่งคืนงานหรืองาน <> (ใน TypeScript นั่นจะเป็นสัญญา <>) เปลี่ยนชื่อของวิธีการ async เป็นลงท้ายด้วย xxxAsync () ตอนนี้เมื่อแทนที่ส่วนประกอบที่มีระดับต่ำและซิงโครนัสด้วยอะซิงก์หนึ่งสิ่งนี้จะส่งผลกระทบต่อสแต็กเต็มของแอปพลิเคชัน เนื่องจาก async / await มีผลกระทบเชิงบวกต่อเมื่อใช้ "all-up up" เท่านั้นนั่นหมายถึงชื่อลายเซ็นและเมธอดของทุกเลเยอร์ในแอปพลิเคชันจะต้องเปลี่ยน สถาปัตยกรรมที่ดีมักจะเกี่ยวข้องกับการวาง abstractions ระหว่างแต่ละเลเยอร์เช่นการแทนที่ส่วนประกอบระดับต่ำโดยผู้อื่นจะมองไม่เห็นโดยส่วนประกอบระดับบน ใน C # abstractions จะอยู่ในรูปของอินเตอร์เฟส หากเราแนะนำส่วนประกอบ async ใหม่ระดับต่ำและต่ำแต่ละอินเตอร์เฟสใน call stack จำเป็นต้องได้รับการแก้ไขหรือแทนที่ด้วยอินเตอร์เฟสใหม่ วิธีการแก้ไขปัญหา (async หรือ …
103 c#  architecture  async 

9
เหตุใดฉันจึงควรใช้การฉีดพึ่งพา
ฉันมีช่วงเวลาที่ยากมองหาแหล่งข้อมูลเกี่ยวกับทำไมฉันจึงควรใช้ฉีดพึ่งพา ทรัพยากรส่วนใหญ่ที่ฉันเห็นอธิบายว่ามันเพิ่งผ่านอินสแตนซ์ของวัตถุไปยังอีกอินสแตนซ์ของวัตถุ แต่ทำไม? นี่เป็นเพียงสถาปัตยกรรม / รหัสที่สะอาดขึ้นหรือมีผลกระทบต่อประสิทธิภาพโดยรวมหรือไม่ ทำไมฉันต้องทำสิ่งต่อไปนี้? class Profile { public function deactivateProfile(Setting $setting) { $setting->isActive = false; } } แทนที่จะเป็นดังต่อไปนี้? class Profile { public function deactivateProfile() { $setting = new Setting(); $setting->isActive = false; } }

17
เป็นความคิดที่ดีหรือไม่ที่จะออกแบบสถาปัตยกรรมที่คิดว่าคลาส User Interface สามารถถูกแทนที่ด้วยอินเตอร์เฟสบรรทัดคำสั่งได้?
ใน Code Complete หน้า 25 มีการกล่าวกันว่าเป็นความคิดที่ดีที่จะสามารถแทนที่คลาสส่วนติดต่อผู้ใช้ทั่วไปด้วยบรรทัดคำสั่งหนึ่งได้อย่างง่ายดาย รู้ถึงข้อดีของการทดสอบแล้วจะเกิดปัญหาอะไรขึ้น งานพิเศษนี้จะได้ผลตอบแทนจริงสำหรับเว็บและโครงการมือถือ โครงการขนาดกลางและเล็ก ใช้กฎเดียวกันนี้อย่างไร เกิดอะไรขึ้นถ้ามันทำให้การออกแบบของคุณซับซ้อนมากขึ้น?

10
ทำไมอลันเคย์ถึงพูดว่า“ อินเทอร์เน็ตทำได้ดีมาก แต่เว็บเป็นมือสมัครเล่น”?
ตกลงดังนั้นฉันถอดความ อ้างเต็ม: อินเทอร์เน็ตทำได้ดีมากจนคนส่วนใหญ่คิดว่ามันเป็นทรัพยากรธรรมชาติเช่นมหาสมุทรแปซิฟิกแทนที่จะเป็นสิ่งที่มนุษย์สร้างขึ้น ครั้งสุดท้ายที่เทคโนโลยีที่มีสเกลเช่นนั้นปราศจากข้อผิดพลาดเกิดขึ้นเมื่อใด เว็บในการเปรียบเทียบเป็นเรื่องตลก เว็บทำโดยมือสมัครเล่น - อลันเคย์ ฉันกำลังพยายามทำความเข้าใจประวัติของอินเทอร์เน็ตและเว็บและข้อความนี้ยากที่จะเข้าใจ ฉันได้อ่านที่อื่นว่าอินเทอร์เน็ตใช้สิ่งที่แตกต่างจากตอนนี้มากและมันอาจเป็นปัจจัย อะไรทำให้อินเทอร์เน็ตทำได้ดีมากและอะไรที่ทำให้เว็บไม่ชำนาญ (แน่นอนอลันเคย์ผิดพลาดและไม่มีใครอยู่ที่นี่คืออลันเคย์ดังนั้นเราจึงไม่สามารถรู้ได้อย่างแม่นยำว่าทำไมเขาถึงพูดแบบนั้น แต่มีคำอธิบายอะไรที่เป็นไปได้บ้าง) * โปรดดูบทสัมภาษณ์ต้นฉบับ *

9
ไลบรารีโอเพ่นซอร์สขนาดใหญ่จะได้รับการดูแลรักษาอย่างไรในขณะที่มีรหัสห่างไกลจากวิธีปฏิบัติที่“ สะอาดโค้ด”
ฉันยังไม่มีประสบการณ์ในการเขียนรหัสคุณภาพสูงดังนั้นฉันจึงอ่านหนังสือเกี่ยวกับปัญหาเช่นClean Codeของ Robert C. Martin และตรวจสอบรหัสของห้องสมุดที่มีชื่อเสียงเพื่อพัฒนาทักษะของฉัน แม้ว่าไลบรารีโอเพนซอร์สจำนวนมากได้รับการดูแลรักษามานานหลายปีซึ่งหมายความว่ามันไม่น่าเป็นไปได้ที่พวกเขาจะไม่ได้อยู่ในเส้นทางที่ถูกต้อง แต่ฉันพบว่าโค้ดในหลาย ๆ โค้ดหลายร้อยบรรทัด ดังนั้นคำถามของฉันคือ: หลักการของโค้ดที่สะอาดเกินไปถูก จำกัด และเราสามารถทำได้โดยไม่ต้องใช้พวกมันในห้องสมุดหลาย ๆ ถ้าไม่เป็นเช่นนั้นห้องสมุดขนาดใหญ่จะได้รับการดูแลอย่างไรโดยไม่คำนึงถึงหลักการเหล่านี้มากมาย? ฉันขอขอบคุณที่ชี้แจงสั้น ๆ ฉันขอโทษถ้าคำถามดูเหมือนว่าโง่จากมือใหม่ แก้ไข ตรวจสอบตัวอย่างนี้ในห้องสมุดButterknife - หนึ่งในห้องสมุดที่มีชื่อเสียงที่สุดในชุมชน Android

7
กลยุทธ์การทำธุรกรรมที่ได้รับการยอมรับมากที่สุดสำหรับ microservices คืออะไร
หนึ่งในปัญหาสำคัญที่ฉันได้เห็นเกิดขึ้นในระบบที่มี microservices คือวิธีการทำธุรกรรมทำงานเมื่อพวกเขาครอบคลุมบริการที่แตกต่างกัน ภายในสถาปัตยกรรมของเราเองเราใช้ธุรกรรมแบบกระจายเพื่อแก้ไขปัญหานี้ แต่พวกเขามาพร้อมกับปัญหาของตนเอง โดยเฉพาะอย่างยิ่งการหยุดชะงักได้รับความเจ็บปวดจนถึงขณะนี้ ตัวเลือกอื่นน่าจะเป็นตัวจัดการทรานแซคชันที่กำหนดเองซึ่งรู้จักการไหลในระบบของคุณและจะดูแลการย้อนกลับสำหรับคุณในฐานะที่เป็นกระบวนการพื้นหลังซึ่งครอบคลุมทั่วทั้งระบบของคุณ (ดังนั้นมันจะบอกบริการอื่น ๆ และหากพวกเขาล้มเหลวให้แจ้งพวกเขาในภายหลัง) มีตัวเลือกอื่นที่ยอมรับหรือไม่ ทั้งคู่ดูเหมือนจะมีข้อเสีย คนแรกอาจทำให้เกิดการหยุดชะงักและปัญหาอื่น ๆ ได้ส่วนที่สองอาจส่งผลให้ข้อมูลไม่สอดคล้องกัน มีตัวเลือกที่ดีกว่านี้ไหม?

17
วิธีฝึกตัวเองให้หลีกเลี่ยงการเขียนรหัส“ ฉลาด” [ปิด]
คุณรู้หรือไม่ว่าความรู้สึกนั้นเมื่อคุณต้องการที่จะแสดงให้เห็นถึงเคล็ดลับใหม่ที่มีExpressions หรือวางแนวทางที่แตกต่างกันสามขั้นตอน? สิ่งนี้ไม่จำเป็นต้องอยู่ในระดับสถาปัตยกรรมนักบินอวกาศและในความเป็นจริงอาจเป็นประโยชน์ แต่ฉันอดไม่ได้ที่จะสังเกตเห็นว่าคนอื่นจะใช้คลาสเดียวกันหรือแพ็คเกจเดียวกันอย่างชัดเจนตรงไปตรงมา (และบางครั้งน่าเบื่อ) ฉันสังเกตว่าฉันมักจะออกแบบโปรแกรมด้วยการแก้ไขปัญหาบางครั้งก็จงใจและบางครั้งก็เบื่อ ไม่ว่าในกรณีใดฉันมักจะเชื่อโดยสุจริตว่าโซลูชันของฉันนั้นใสและสง่างามจนกระทั่งฉันเห็นหลักฐานที่ตรงกันข้าม แต่โดยปกติแล้วมันจะสายเกินไป นอกจากนี้ยังมีส่วนหนึ่งของฉันที่ชอบสมมติฐานที่ไม่มีเอกสารในการทำสำเนารหัสและความฉลาดในการเรียบง่าย ฉันจะทำอะไรได้บ้างที่จะต่อต้านการกระตุ้นให้เขียนรหัส“ ฉลาด”และเสียงกระดิ่งที่ฉันควรทำเมื่อใด ปัญหาคือการผลักมากขึ้นขณะที่ฉันกำลังทำงานกับทีมนักพัฒนาที่มีประสบการณ์และบางครั้งความพยายามของฉันในการเขียนรหัสสมาร์ทดูเหมือนโง่เง่าแม้แต่กับตัวเองหลังจากเวลาผ่านไปภาพลวงตาของความสง่างาม

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