อะไรคือหลักปฏิบัติและรูปแบบการออกแบบที่ผู้ชาย. NET ทุกคนควรรู้ [ปิด]


16

ในช่วงเวลาสั้น ๆ ของฉันในฐานะโปรแกรมเมอร์มืออาชีพฉันได้เห็นแอปพลิเคชั่นมากมายที่เขียนขึ้นโดยโปรแกรมเมอร์ผู้ซึ่งการศึกษาทั้งหมดดูเหมือนจะได้อ่านบทแรก ๆ สองเล่มในหนังสือ. NET 2.0

เฮ็คเมื่อฉันเริ่มฉันเขียนแอพพลิเคชั่นเหล่านั้นส่วนใหญ่!

รูปแบบการออกแบบที่ใหญ่ที่สุดคืออะไรสำคัญสำหรับการเขียนแอปพลิเคชัน AWESOME .NET

โดยที่ยอดเยี่ยมฉันหมายถึงภายในด้วย!


ไม่มีความสำคัญ
kirk.burleson

คำตอบ:


22

ครั้งแรก: รู้จักเครื่องมือพื้นฐานของคุณดี

  1. รู้จักโมเดลเหตุการณ์ ASP.Net คุณจะสับสนถ้าคุณไม่ทำ

  2. ทำความเข้าใจกลไกของ OO จำนวนโปรแกรมเมอร์. Net ที่มีประสบการณ์ค่อนข้างน่าแปลกใจยังดูเหมือนว่าจะเป็นปี 1972

  3. เริ่มอ่าน Code Complete

ที่สอง: เรียนรู้ที่จะแยกข้อกังวล

อาชญากรรมการออกแบบที่พบบ่อยที่สุดที่ฉันเห็นในการพัฒนา ASP.Net คือการใช้ตรรกะทางธุรกิจทั้งหมดในการเขียนโค้ด ฉันรู้ว่าตัวอย่างทั้งหมดของ Microsoft ทำเช่นนั้น ฉันรู้ว่ามันเป็นธรรมในแอปขนาดเล็ก และฉันรู้ว่าบางครั้งฉันก็ทำอย่างนั้น แต่จริงๆแล้วมันคือการออกแบบที่ไม่ดีและเป็นสัตว์เลี้ยงของฉันเกลียดตลอดทั้งสัปดาห์

ประการที่สาม: เรียนรู้ทุกอย่างเกี่ยวกับการออกแบบ

รหัส. net คุณภาพต่ำส่วนใหญ่ที่ฉันเห็นคือผลลัพธ์ของการออกแบบ OO ที่ไม่ดี ดังนั้นฉันขอแนะนำให้ทำความเข้าใจกับ:

  • หลักการที่เป็นของแข็ง
  • รูปแบบการออกแบบ GoF
  • MVC (สำหรับ ASP.Net MVC)

ที่สี่: ทำความรู้จักกับเครื่องมือเพิ่มเติม

คุณรู้หรือไม่ว่า Microsoft ทำให้ทุกอย่างง่ายขึ้นได้อย่างไรโดยการมอบเครื่องมือที่ไม่เหมือนใครมากมาย? คุณจะได้รับข้อ จำกัด ไม่ช้าก็เร็ว เมื่อคุณทำคุณจะต้องโค้งงอพวกเขาตามความประสงค์ของคุณหรือหมุนตัวเอง ไม่ว่าจะด้วยวิธีใดคุณจะต้องทำให้สกปรกด้วย CSS และ Javascript บางส่วน

ในที่สุด

เมื่อคุณทำสิ่งนั้นได้มากคุณก็จะไปได้อย่างยอดเยี่ยม

[แก้ไข: แก้ไขลำดับสำหรับการเรียนรู้ sutff นี้ เห็นได้ชัดว่าฉันไม่สามารถนับเมื่อวานนี้ ... ]


"เมื่อคุณทำคุณจะต้องงอพวกเขาตามความประสงค์ของคุณหรือทำให้ตัวคุณเอง" หรือใช้โอเพ่นซอร์สบางอย่าง +1 อย่างไรก็ตามคำตอบที่ดี
pdr

ขอบคุณ .. คำตอบที่น่ากลัวจริง ๆ :-) แต่ทั้งหมดนี้มีข่าวเกี่ยวกับ mvvm, ioc, mvp, ที่เก็บ, โรงงาน ... ใส่ buzzword ขนาดใหญ่อื่น ๆ ที่นี่ .. ปัจจุบัน "ไมโครซอฟท์อวยพร" วิธีการสร้างเว็บแอปคืออะไร?
Daniel Upton

3
MVVM - (ปัจจุบัน) รูปแบบการออกแบบเฉพาะ WFP / Silverlight MVP - รูปแบบที่คล้ายคลึงกับ MVC ซึ่งมีความแตกต่างในการโต้ตอบระหว่างคลาส / เลเยอร์ ที่เก็บ / โรงงาน / IOC - ควรจะครอบคลุมในการอ่านของคุณสำหรับ "สาม" ข้างต้นพวกเขาเกี่ยวข้องกับการแยกความกังวลหลักการ DRY และการออกแบบที่ทดสอบได้ วิธีการ "รับพรจาก Microsoft" - ขึ้นอยู่กับความต้องการของคุณ แนวโน้มในปัจจุบันดูเหมือนว่าจะเป็น MVC3 ซึ่งไปไกลในการเปิดใช้งานการออกแบบ "ดี" ที่มีความยุ่งยากน้อยกว่าด้วย IOC / DI ง่ายตัวควบคุมที่ทดสอบได้ ฯลฯ
mjhilton

3
@Daniel มีคำศัพท์มากมายที่นั่น สิ่งที่สำคัญที่สุดที่คุณสามารถทำได้คือการเรียนรู้ว่าพวกเขาคืออะไรและปัญหาประเภทใดที่พวกเขาสามารถช่วยคุณแก้ไขได้ อย่าติดกับดักของแอพพลิเคชั่นทั้งหมดในชุดรูปแบบการออกแบบที่ไม่เพิ่มคุณค่าในด้านการบำรุงรักษาหรือแย่กว่านั้นยากที่จะเข้าใจ (บางครั้งมากจนคุณจำอะไรไม่ได้เลย) ทำ 6 เดือนหลังจากที่คุณเขียน) ให้รูปแบบที่เกี่ยวข้องช่วยให้คุณสร้างปัญหาที่ซับซ้อนได้ง่ายขึ้น
Michael Dean

1
@Daniel: ฉันจะไม่กังวลมากเกินไปเกี่ยวกับวิธีการ "Microsoft พร" การออกแบบที่ดีคือการออกแบบที่ดีไม่ว่าใครจะเป็นพระพร ในความเป็นจริง Microsoft มักจะมีการติดตามในพื้นที่นี้ (เช่น ASP.Net MVC เป็นการตอบสนองต่อเฟรมเวิร์ก MVC อื่น ๆ ) ที่กล่าวว่าคุณไม่ต้องการที่จะอยู่ตระหนักถึง Micosoft เทคโนโลยี การออกแบบที่ยอดเยี่ยมได้รับทราบว่าล้มเหลวเนื่องจากไม่เหมาะกับชุดเครื่องมือที่มีอยู่
Kramii

0

ความหลากหลายของคะแนนที่กล่าวถึงโดย Kramii นั้นคุ้มค่ามาก แต่ฉันต้องการเน้นการกล่าวถึงการทำงานกับหลักการของ SOLID การทำความเข้าใจกับสิ่งเหล่านี้จะสร้างความแตกต่างอย่างมากและรูปแบบของ GoF และอื่น ๆ อีกมากมายจะเริ่มลดลงตามธรรมชาติ สิ่งเหล่านี้ส่วนใหญ่จบลงด้วยการแยกข้อกังวลของคุณและจัดการการพึ่งพาของคุณดังนั้นเริ่มต้นจากแหล่งที่มาและทุกอย่างอื่นจะเข้าท่า

หากคุณเป็นเหมือนฉันก่อนหน้านี้หลักสูตรการเข้ารหัส OO ล่าสุดของฉันกับ JP Boodhoo หลักการความรับผิดชอบเดียวมีความหมายมากกว่าที่คุณคิด! เป็นเรื่องที่ควรค่าแก่การเข้าใจว่าคลาสเล็กเพียงใดเมื่อคุณยึดติดกับบ่อน้ำนี้

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