คำถามติดแท็ก aspect-oriented

6
การเขียนโปรแกรมเชิงมุมมอง: เมื่อใดที่จะเริ่มใช้เฟรมเวิร์ก
ฉันเพิ่งดูการสนทนานี้โดยGreg Youngเตือนผู้คนถึง KISS: Keep It Simple Stupid หนึ่งในสิ่งที่เขาบอกว่าจะทำอย่างไรการเขียนโปรแกรมเชิงลักษณะอย่างใดอย่างหนึ่งไม่ได้ต้องกรอบ เขาเริ่มต้นด้วยการทำให้มีข้อ จำกัด ที่แข็งแกร่ง: วิธีการทั้งหมดใช้เวลาหนึ่งและเพียงหนึ่งพารามิเตอร์ (แม้ว่าเขาจะผ่อนคลายนี้เล็กน้อยในภายหลังโดยใช้โปรแกรมบางส่วน ) ตัวอย่างที่เขามอบให้คือการกำหนดอินเตอร์เฟส: public interface IConsumes<T> { void Consume(T message); } ถ้าเราต้องการออกคำสั่ง: public class Command { public string SomeInformation; public int ID; public override string ToString() { return ID + " : " + SomeInformation + Environment.NewLine; } …

2
แนวคิดเรื่อง AOP อธิบายถึงหุ่นจำลอง
บางคนสามารถอธิบายแนวคิดของ AOP สำหรับหุ่นได้ที่จุดเชื่อม, จุดตัด, การทอ ฯลฯ ตัวอย่างเช่น: มุมมอง: การทำให้เป็นโมดูลของข้อกังวลที่ตัดข้ามหลายคลาส นั่นหมายความว่าอย่างไร?

3
ปัญหาบางอย่างได้รับการแก้ไขอย่างสวยงามยิ่งขึ้นด้วย AOP หรือไม่?
ฉันได้พบกับแนวคิดของการเขียนโปรแกรม Aspect Oriented และฉันมีข้อกังวลบางอย่างกับมัน แนวคิดพื้นฐานน่าจะเป็นที่เราต้องการที่จะกังวลข้ามตัดซึ่งไม่ได้เป็นโมดูลที่ดีในการใช้วัตถุและทำให้เป็นโมดูล นั่นคือทั้งหมดที่ดีและดี แต่การใช้ AOP ดูเหมือนว่าเป็นการปรับเปลี่ยนรหัสจากภายนอกโมดูล ตัวอย่างเช่นสามารถเขียนมุมมองที่เปลี่ยนแปลงสิ่งที่เกิดขึ้นเมื่อวัตถุเฉพาะถูกส่งผ่านเป็นพารามิเตอร์ในฟังก์ชั่น ดูเหมือนว่าจะขัดกับแนวคิดของโมดูลโดยตรง ฉันไม่ควรแก้ไขพฤติกรรมของโมดูลจากด้านนอกของโมดูลนั้นมิฉะนั้นจุดทั้งหมดของโมดูลจะถูกยกเลิก แต่ดูเหมือนว่าจะทำอย่างนั้น! โดยทั่วไปลักษณะต่าง ๆ เป็นรูปแบบของการแก้ไขโค้ด มันอาจมีประโยชน์สำหรับแฮ็กเร็ว ๆ แต่ตามหลักการทั่วไปอาจไม่ใช่สิ่งที่คุณต้องการทำ Aspect Oriented Programming ดูเหมือนว่าฉันจะฝึกฝนและพัฒนาหลักการออกแบบทั่วไปไม่ดี AOP เป็นแนวปฏิบัติที่ดีหรือไม่? ปัญหาการเขียนโปรแกรมบางอย่างได้รับการแก้ไขอย่างสวยงามยิ่งขึ้นด้วย AOP หรือไม่?

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

1
อะไรคือความแตกต่างระหว่างการเขียนโปรแกรมที่มุ่งเน้นด้าน, มุ่งเน้นเรื่องและบทบาท?
ฉันรู้ว่ามีเอกสารมากมายที่อธิบายกระบวนทัศน์ทั้งสามนี้ แต่ฉันกำลังมองหาคำอธิบายแผนผัง มีคำอธิบายที่ดีมากบางประการเกี่ยวกับการเขียนโปรแกรมที่มุ่งเน้นด้านนี้ดังนั้นฉันจึงถามคำถามนี้ด้วยความหวังว่าจะได้รับคำตอบที่มีคุณภาพสูงที่ผู้คนใน Stack Overflow คุ้นเคยกับการนำเสนอ

4
มีข้อยกเว้นในการจัดการกับปัญหาการตัดขวางหรือไม่?
ฉันไม่เห็นความแตกต่างระหว่างข้อกังวลของการจัดการข้อยกเว้นและการเข้าสู่ระบบที่ทั้งคู่เป็นข้อกังวลตัดขวาง คุณคิดอย่างไร? ไม่ควรจัดการแยกต่างหากด้วยตัวเองแทนที่จะสอดแทรกด้วยตรรกะหลักที่วิธีการใช้งานอยู่? แก้ไข : สิ่งที่ฉันพยายามจะพูดก็คือในความคิดของฉันการใช้วิธีการควรมีตรรกะสำหรับเส้นทางที่ประสบความสำเร็จของการดำเนินการและข้อยกเว้นควรได้รับการจัดการที่อื่น นี่ไม่ใช่ข้อยกเว้นเกี่ยวกับการตรวจสอบ / ไม่ได้ตรวจสอบ ตัวอย่างเช่นภาษาอาจจัดการกับข้อยกเว้นในวิธีการตรวจสอบอย่างสมบูรณ์โดยใช้โครงสร้างดังนี้: class FileReader { public String readFile(String path) { // implement the reading logic, avoid exception handling } } handler FileReader { handle String readFile(String path) { when (IOException joe) { // somehow access the FileInputStram and close it } } …

3
การทอโค้ด Byte กับ Lisp แมโคร
ฉันได้อ่านเกี่ยวกับห้องสมุดที่ผู้คนเขียนสำหรับภาษาอย่าง Java และ C # ซึ่งใช้ประโยชน์จากรหัสไบต์ที่ทอผ้าเพื่อทำสิ่งต่าง ๆ เช่นการตัดการเรียกใช้ฟังก์ชันการแทรกรหัสการบันทึก ฯลฯ ฉันได้อ่านมาโคร Lisp / Clojure ด้วย พยายามเข้าใจวิธีการใช้งานให้ดีขึ้น ยิ่งฉันอ่านมาโครมากเท่าไหร่ก็ยิ่งมีความสามารถในการทำงานเหมือนกับไลบรารีการทอโค้ดไบต์ โดยฟังก์ชั่นฉันหมายถึงความสามารถในการจัดการรหัสในเวลารวบรวม ตัวอย่างของห้องสมุดที่ฉันดูอยู่จะเป็น AspectJ, PostSharp และ Cecil มีสิ่งใดบ้างที่สามารถทำได้กับสิ่งหนึ่งและอีกอันหนึ่งไม่ใช่หรือ พวกเขาแก้ปัญหาเดียวกันได้จริงหรือฉันกำลังเปรียบเทียบแอปเปิ้ลกับส้ม?
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.