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

คำถามเกี่ยวกับการแก้ปัญหาและการวางแผนแก้ปัญหาผ่านการออกแบบซอฟต์แวร์

1
การเขียนโปรแกรมขั้นสูงสำหรับนักพัฒนาคนเดียว [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว ฉันได้ทำงานร่วมกับแนวคิดการเขียนโปรแกรมขั้นพื้นฐานบางอย่างในช่วงสองสัปดาห์ที่ผ่านมาสำหรับเกมขนาดเล็กที่แสวงหาผลกำไรหลายคนและเกมอาร์เคด ฉันใช้เวลาหนึ่งสัปดาห์ในการพัฒนาเรื่องราวของผู้ใช้และการกำหนดข้อกำหนดเพื่อสร้างแผนการวางจำหน่าย ฉันใช้เวลาหนึ่งสัปดาห์ในการเขียนโค้ดและใช้แผนการทำซ้ำครั้งแรกที่ฉันทำ ฉันได้ระบุแนวคิดที่มีประโยชน์บางอย่างสำหรับนักพัฒนาเพียงคนเดียว บูรณาการอย่างต่อเนื่อง อย่าเพิ่มฟังก์ชันการทำงานก่อน ทดสอบการพัฒนาขับเคลื่อน เลือกคำอุปมาระบบ ใช้จุดบูรณาการเดียว ทดสอบข้อบกพร่องทั้งหมด refactor อย่างต่อเนื่อง กำหนดจังหวะที่ยั่งยืน ความง่าย เผยแพร่เป็นประจำ ฉันอยากรู้ว่าถ้าฉันขาดอะไรเป็นพิเศษที่อาจเหมาะกับการทำงานกับโครงการผู้พัฒนาเดียวหรือไม่ นอกจากนี้ในแง่นี้เนื่องจากความคิดของความเรียบง่ายและการพัฒนาที่ขับเคลื่อนด้วยการทดสอบจะดีกว่าหรือไม่ที่จะใช้แพลตฟอร์มที่มีคุณลักษณะหลากหลายและพร้อมทำหรือไม่? หรือฉันควรทำงานตั้งแต่เริ่มต้นเพื่อหลีกเลี่ยงปัญหาที่นำเสนอด้วยกฎเช่นการปรับโครงสร้างใหม่อย่างต่อเนื่องและไม่เพิ่มฟังก์ชันการทำงานก่อน

3
มีกลยุทธ์ในการค้นหาบริการ REST โดยใช้ HATEOAS หรือไม่
เมื่อสร้างบริการ REST ด้วยข้อ จำกัดHATEOASมันง่ายมากที่จะโฆษณาการมีอยู่ของทรัพยากรผ่านการเชื่อมโยง คุณทำGETถึงรูทของเว็บไซต์ของฉันและฉันตอบกลับด้วยเอกสารรูทที่แสดงรายการทรัพยากรระดับแรกทั้งหมด: { users: { href: "/users" } questions { href: "/questions" } } ลูกค้าที่เข้าใจวิธีการอ่านhrefค่าเหล่านี้สามารถดำเนินการGETตามคำขอและค้นหาทรัพยากรปัจจุบันทั้งหมดที่มีอยู่ในแอปพลิเคชัน สิ่งนี้ทำงานได้ดีสำหรับสถานการณ์การค้นหาขั้นพื้นฐาน แต่ไม่ได้ระบุว่าทรัพยากรสามารถสืบค้นได้หรือไม่ ตัวอย่างเช่นอาจมีเหตุผลที่จะดำเนินการ: GET /users?surname=Smith มีรูปแบบใดบ้างที่สามารถแสดงความสามารถในการสืบค้นด้วยข้อมูลที่เพียงพอที่ลูกค้าสามารถสร้างแบบสอบถามแบบเชื่อมโยงกันโดยไม่จำเป็นต้องมีความรู้มาก่อนเกี่ยวกับทรัพยากรหรือไม่ นอกจากนี้ยังมีวิธีที่จะแสดงว่าลูกค้าได้รับอนุญาตให้ดำเนินการPOSTไปยังสถานที่ที่กำหนดพร้อมกับสถานที่ที่คาดหวัง ตัวอย่างเช่นอาจเป็นไปได้ว่าลูกค้าจะทำสิ่งต่อไปนี้เพื่อสร้างทรัพยากรคำถามใหม่: POST /questions { title: "Are there strategies for discovering REST services using HATEOAS?", body: "When building a REST service with the HATEOAS constraint, it's …
10 design  rest  hateoas 

1
ภาษาข้อ จำกัด ของวัตถุ (OCL) สำหรับสแต็กในแพคเกจ java.util
ฉันมีการสอบขึ้นมาและฉันกำลังดูเอกสารที่ผ่านมาเพื่อรับแนวคิดบางอย่างเกี่ยวกับสิ่งที่คาดหวัง ฉันติดอยู่กับสิ่งต่อไปนี้และจะซาบซึ้งจริง ๆ ถ้ามีคนให้คำตอบตัวอย่าง เขียนเงื่อนไขเบื้องต้นและ postconditions ใน OCL สำหรับแต่ละการดำเนินการดังต่อไปนี้ (รวมอยู่ในสแต็คคลาสในแพ็คเกจ java.util): (1) บูลีนว่างเปล่า () - ทดสอบว่าสแต็กนี้ว่างเปล่าหรือไม่ (2) E peek () - ดูที่วัตถุที่ด้านบนของสแต็กนี้โดยไม่ลบออกจากสแต็ก (3) E pop () - ลบวัตถุที่ด้านบนของสแต็กนี้และส่งคืนวัตถุนั้นเป็นค่าของการดำเนินการนี้ (4) E push (รายการ E) - กดรายการลงบนสุดของสแต็กนี้ นี่ E หมายถึงประเภทขององค์ประกอบในสแต็ก ความพยายามของฉันมีดังนี้ Boolean empty() pre: none post: self -> IsEmpty() = true //should …
10 design  languages  object  ocl 

3
รายการพารามิเตอร์ของวิธีการควรมีวัตถุหรือตัวระบุวัตถุ?
ทีมของเรากำลังสนทนากันดังต่อไปนี้: สมมติว่าเรามีสองวิธีต่อไปนี้: public Response Withdraw(int clubId, int terminalId,int cardId, string invoice, decimal amount); public Response Withdraw(Club club, Terminal terminal,Card card, string invoice, decimal amount); อะไรที่ส่งผ่านสายเป็นเพียงรหัส ด้านหนึ่งบอกว่าวิธีแรกนั้นถูกต้องเพราะเรามีรหัสเทอร์มินัลและคลับเท่านั้นและควรชัดเจนว่าเราไม่มีอะไรอย่างอื่นนี่คือแนวทางของฉัน อีกด้านหนึ่งบอกว่าวิธีที่สองนั้นถูกต้องเพราะมีความยืดหยุ่นมากกว่า เราคุ้นเคยกับแนวคิดพารามิเตอร์วัตถุอีกด้านหนึ่งคิดว่าพารามิเตอร์วัตถุควรมีวัตถุเป็นคุณสมบัติ วิธีใดที่ถูกต้อง อาจจะมีวิธีที่สามที่ดียิ่งขึ้น?
10 design  methods 

3
มีแนวคิดแบบ“ หลอกใช้” ในการพัฒนาซอฟต์แวร์หรือไม่?
ฉันกำลังมองหาฉลากเพื่ออธิบายวิธีปฏิบัติในการใช้วิธีการคำนวณโดยมนุษย์หรือวิธีอื่นในการ "แกล้ง" อัลกอริทึมเพื่อประโยชน์ในการรับผลิตภัณฑ์หรือการสาธิตอย่างรวดเร็วโดยไม่ต้องเสียเวลาพัฒนาเทคนิค / ปรับขนาดได้ / โซลูชันการวิเคราะห์? เช่นการใช้ Amazon Turk เพื่อนับจำนวนโต๊ะว่างในร้านอาหาร ฉันยังต้องการเรียนรู้เพิ่มเติมเกี่ยวกับเรื่องนี้ แต่ไม่แน่ใจว่าจะค้นหาอะไร การคำนวณโดยใช้มนุษย์เป็นเพียงวิธีเดียวฉันสนใจในแนวคิดทั่วไปเกี่ยวกับการใช้งานหลอก ความคิดใด ๆ ที่แนะนำให้อ่าน?

5
ฉันควรรวมต้นทุนทางออกไว้ในการเลือกโซลูชันหรือไม่
ฉันกำลังเลือกระหว่างการออกแบบ / การแก้ปัญหาซอฟต์แวร์ที่ทำงานได้สองแบบ โซลูชันที่ 1 ใช้งานง่าย แต่จะล็อคข้อมูลบางอย่างในรูปแบบที่เป็นกรรมสิทธิ์และจะยากที่จะเปลี่ยนแปลงในภายหลัง โซลูชันที่ 2 นั้นยากที่จะนำไปใช้ แต่จะเปลี่ยนได้ง่ายขึ้นในภายหลัง ฉันควรจะไป YAGNI ในเรื่องนี้หรือฉันควรรวมต้นทุนการออกในการตัดสินใจ? หรือถามต่างกันค่าใช้จ่ายในการออกเป็นส่วนหนึ่งของ TCO หรือไม่ ฉันกำลังคิดว่าจะกลับไปหาลูกค้าด้วยสิ่งนี้เพื่อถามว่าเขาคิดว่าต้นทุนการออกมีความเกี่ยวข้องหรือไม่ แต่ฉันอยากจะรู้ว่าชุมชนคิดอย่างไรก่อน PS ต้นทุนการออกเป็นคำที่ถูกต้องหรือไม่

5
วิธีทดสอบหน่วยฟังก์ชันที่ปรับโครงสร้างรูปแบบกลยุทธ์ใหม่แล้วหรือไม่
ถ้าฉันมีฟังก์ชั่นในรหัสของฉันที่จะไป: class Employee{ public string calculateTax(string name, int salary) { switch (name) { case "Chris": doSomething($salary); case "David": doSomethingDifferent($salary); case "Scott": doOtherThing($salary); } } โดยปกติฉันจะ refactor นี้เพื่อใช้ Ploymorphism โดยใช้คลาสโรงงานและรูปแบบกลยุทธ์: public string calculateTax(string name) { InameHandler nameHandler = NameHandlerFactory::getHandler(name); nameHandler->calculateTax($salary); } ตอนนี้ถ้าฉันใช้ TDD ฉันก็จะมีการทดสอบบางอย่างที่ทำงานกับต้นฉบับcalculateTax()ก่อนที่จะทำการรีแฟคเตอร์ อดีต: calculateTax_givenChrisSalaryBelowThreshold_Expect111(){} calculateTax_givenChrisSalaryAboveThreshold_Expect111(){} calculateTax_givenDavidSalaryBelowThreshold_Expect222(){} calculateTax_givenDavidSalaryAboveThreshold_Expect222(){} calculateTax_givenScottSalaryBelowThreshold_Expect333(){} calculateTax_givenScottSalaryAboveThreshold_Expect333(){} …

6
การตีความหลักการ DRY
ตอนนี้ฉันกำลังดิ้นรนกับแนวคิด DRY (อย่าทำซ้ำตัวเอง) ในการเขียนโค้ดของฉัน ฉันกำลังสร้างฟังก์ชั่นนี้ซึ่งฉันกลัวว่ามันจะซับซ้อนเกินไป แต่ฉันพยายามทำตามหลักการของ DRY createTrajectoryFromPoint(A a,B b,C c,boolean doesSomething,boolean doesSomething2) ฟังก์ชั่นนี้ผมจะพูดจะใช้เวลาป้อนพารามิเตอร์ 3 แล้วการทำงานจะทำบางสิ่งบางอย่างที่แตกต่างกันเล็กน้อยที่ได้รับการผสมบูลและdoesSomething doesSomething2อย่างไรก็ตามปัญหาที่ฉันมีคือฟังก์ชั่นนี้เพิ่มขึ้นอย่างซับซ้อนด้วยพารามิเตอร์บูลีนใหม่ทุกตัวที่เพิ่มเข้ามา ดังนั้นคำถามของฉันคือดีกว่าที่จะมีฟังก์ชั่นต่าง ๆ มากมายที่ใช้ตรรกะเดียวกันจำนวนมาก (ดังนั้นละเมิดหลักการ DRY) หรือฟังก์ชั่นหนึ่งที่ทำงานแตกต่างกันเล็กน้อยตามจำนวนพารามิเตอร์ แต่ทำให้ซับซ้อนมากขึ้น (แต่ รักษา DRY) หรือไม่
10 java  design  dry 

4
รูปแบบการออกแบบสำหรับการจัดการการตอบสนอง
ส่วนใหญ่เวลาที่ฉันเขียนโค้ดบางอย่างที่จัดการการตอบสนองสำหรับการเรียกใช้ฟังก์ชันบางฉันได้รับโครงสร้างรหัสต่อไปนี้: ตัวอย่าง: นี่คือฟังก์ชันที่จะจัดการการรับรองความถูกต้องสำหรับระบบเข้าสู่ระบบ class Authentication{ function login(){ //This function is called from my Controller $result=$this->authenticate($username,$password); if($result=='wrong password'){ //increase the login trials counter //send mail to admin //store visitor ip }else if($result=='wrong username'){ //increase the login trials counter //do other stuff }else if($result=='login trials exceeded') //do some stuff }else if($result=='banned ip'){ …

1
วิธีการสร้าง Python“ god class” ใหม่ได้อย่างไร
ปัญหา ฉันกำลังทำงานในโครงการงูหลามซึ่งชั้นเรียนหลักเป็น“ พระเจ้าวัตถุ ” เล็กน้อย นอกจากนี้เพื่อให้ friggin' หลายลักษณะและวิธีการ! ฉันต้องการปรับโครงสร้างห้องเรียนอีกครั้ง จนถึงตอนนี้ ... สำหรับขั้นตอนแรกฉันต้องการทำสิ่งที่ค่อนข้างง่าย แต่เมื่อฉันลองใช้วิธีที่ตรงไปตรงมาที่สุดมันก็ทำลายการทดสอบและตัวอย่างที่มีอยู่ โดยทั่วไปชั้นเรียนมีรายการคุณลักษณะที่ยาวมาก - แต่ฉันสามารถมองข้ามพวกเขาอย่างชัดเจนและคิดว่า“ คุณลักษณะทั้ง 5 นี้เกี่ยวข้องกัน… 8 สิ่งเหล่านี้สัมพันธ์กัน…แล้วก็มีส่วนที่เหลือ” getattr โดยทั่วไปฉันแค่ต้องการจัดกลุ่มคุณลักษณะที่เกี่ยวข้องลงในคลาสผู้ช่วยแบบ dict ฉันมีความรู้สึก__getattr__จะเหมาะสำหรับงาน ดังนั้นฉันจึงย้ายคุณสมบัติไปยังชั้นเรียนอื่นและแน่นอน__getattr__ใช้เวทย์มนตร์ของมันได้อย่างสมบูรณ์แบบดี ... ในตอนแรก แต่จากนั้นฉันลองใช้หนึ่งในตัวอย่าง คลาสย่อยตัวอย่างพยายามตั้งค่าหนึ่งในแอ็ตทริบิวต์เหล่านี้โดยตรง (ที่ระดับคลาส ) แต่เนื่องจากแอตทริบิวต์ไม่ได้“ อยู่ในสภาพร่างกาย” อีกต่อไปในชั้นผู้ปกครองฉันได้รับข้อผิดพลาดที่บอกว่าไม่มีแอตทริบิวต์ @property ฉันอ่านเกี่ยวกับ@propertyมัณฑนากร แต่ฉันก็อ่านด้วยว่ามันสร้างปัญหาให้กับคลาสย่อยที่ต้องการทำself.x = blahเมื่อxเป็นคุณสมบัติของคลาสพาเรนต์ ที่ต้องการอยากมี ให้รหัสลูกค้าทั้งหมดยังคงใช้งานได้ต่อไปself.whateverแม้ว่าwhateverคุณสมบัติของผู้ปกครองจะไม่“ อยู่ตามร่างกาย” ในคลาส (หรืออินสแตนซ์) เอง จัดกลุ่มแอตทริบิวต์ที่เกี่ยวข้องลงในคอนเทนเนอร์เหมือน dict ลดเสียงดังสุด ๆ …

2
'กฎของ Demeter' ใช้กับลายเซ็นวิธีสาธารณะ / API หรือไม่
เนื่องจากการเปลี่ยนแปลงของ API / วิธีการลงนามสาธารณะควรมีเพียงเล็กน้อยเพื่อป้องกันการแตกรหัสลูกค้าที่ใช้วิธีการเหล่านี้ฉันสงสัยว่ากฎหมายของ Demeterนั้นมีผลบังคับใช้น้อยกว่านี้หรือไม่ ตัวอย่างง่ายๆ: class Account() { double balance; public void debit(Transaction t) { balance -= t.getAmount(); } } โปรดสังเกตว่าวิธีการเดบิตผ่านวัตถุการทำธุรกรรมมากกว่าเพียงแค่จำนวนสองเท่า ('กฎหมายของ Demeter' ตามที่ฉันเข้าใจว่าจะบอกให้ส่งผ่านข้อมูลที่ต้องการในกรณีนี้เพียงแค่จำนวนเงินไม่ใช่วัตถุธุรกรรม ... ) เหตุผลเบื้องหลังนี้เป็นเพราะวิธีการในอนาคตอาจต้องการคุณสมบัติการทำธุรกรรมอื่นนอกเหนือจากจำนวนเงิน จากสิ่งที่ฉันเข้าใจสิ่งนี้จะป้องกันไม่ให้ลายเซ็นวิธีการแตกหักโดยการเพิ่มพารามิเตอร์ใหม่ในอนาคต สิ่งนี้ทำให้เป็นตัวเลือกที่สมเหตุสมผลหรือไม่? หรือฉันกำลังพลาดอะไรอยู่?

5
อินเทอร์เฟซและการสืบทอด: สุดยอดของทั้งสองโลก
ฉันค้นพบอินเทอร์เฟซและฉันเริ่มรักพวกเขา ความสวยงามของอินเทอร์เฟซคือมันเป็นสัญญาและวัตถุใด ๆ ที่ตอบสนองสัญญานั้นสามารถใช้ได้ทุกที่ที่ต้องการอินเตอร์เฟส ปัญหาของอินเทอร์เฟซคือมันไม่สามารถมีการใช้งานเริ่มต้นซึ่งเป็นคุณสมบัติที่เจ็บปวดสำหรับคุณสมบัติทางโลกและกำจัด DRY สิ่งนี้ก็เป็นสิ่งที่ดีเพราะมันทำให้การใช้งานและระบบแยกจากกัน ในทางกลับกันมรดกยังคงรักษาคัปปลิ้งที่แน่นกว่าและมีศักยภาพที่จะทำลายการห่อหุ้ม กรณีที่ 1 (การสืบทอดกับสมาชิกส่วนตัวการห่อหุ้มที่ดีเข้าด้วยกันอย่างแน่นหนา) class Employee { int money_earned; string name; public: void do_work(){money_earned++;}; string get_name(return name;); }; class Nurse : public Employee: { public: void do_work(/*do work. Oops, can't update money_earned. Unaware I have to call superclass' do_work()*/); }; void HireNurse(Nurse *n) …

7
ฉันจะไปจากการเขียนโค้ดเพื่อเป็นนักพัฒนาที่ดีได้อย่างไร
ฉันรู้สึกผิดหวังที่ไม่มีคำอธิบายที่เป็นรูปธรรมเกี่ยวกับวิธีการที่จะสามารถเขียนสคริปต์ (bash, awk) และเขียนแอปพลิเคชันง่าย ๆ (c, php, python) ไปจนถึงการออกแบบและพัฒนาซอฟต์แวร์ที่มีขนาดใหญ่และซับซ้อนมากขึ้น ดูเหมือนว่าในอีกด้านหนึ่งมีหนังสือภาษาโปรแกรมและอีกด้านหนึ่งมีหนังสือวิศวกรรมซอฟต์แวร์ / การจัดการโครงการที่ออกแบบมาสำหรับทีมโปรแกรมเมอร์ ฉันได้อ่านทั้งสองอย่างมากมาย ฉันได้อ่านคลาสสิก XP / Agile และมีความเข้าใจทางทฤษฎีที่ดีเกี่ยวกับกระบวนการพัฒนาซอฟต์แวร์ ฉันชอบอ่านรหัสของคนอื่นและสามารถทำตามได้ค่อนข้างดี แต่เมื่อฉันมีความคิดเกี่ยวกับโครงการหรือต้องการเปลี่ยนจาก "นี่คือปัญหา / ต้องการ" ถึง "นี่คือทางออก" ใจของฉันวาดหน้าเปล่าและไม่รู้ว่าจะเริ่มต้นตรงไหน ฉันเพิ่งแฮ็คมันออกมา? มีเวิร์กโฟลว์ที่มีโครงสร้างสำหรับนักพัฒนาแต่ละคนที่ไม่ได้ทำงานเป็นทีมหรือเป็นบ้านซอฟต์แวร์ขนาดใหญ่หรือไม่? ฉันไม่มีความปรารถนาที่จะได้รับ PMP หรือทำงานให้กับ บริษัท ซอฟต์แวร์ ฉันแค่มองหาเวิร์กโฟลว์ที่มีประสิทธิภาพประสิทธิผลและใช้งานได้จริง

5
กำหนดค่าระดับ / โครงสร้าง: รูปแบบหรือรูปแบบต่อต้าน? ทางเลือก?
หากคุณเพิ่มตัวเลือกการกำหนดค่าใหม่ให้กับโปรแกรมมันมักจะมีเอฟเฟ็กต์ระลอกคลื่นจำนวนมากในแง่ของการรับตัวเลือกไปยังตำแหน่งที่จำเป็นต้องดำเนินการ มีสามวิธีพื้นฐานในการจัดการกับสิ่งนี้ที่ฉันรู้: ส่งการตั้งค่าทั้งหมดไปยังส่วนต่าง ๆ ของโปรแกรมของคุณที่ต้องการการตั้งค่าพื้นฐาน นี่คือวิธีที่ชัดเจนที่สุดและวิธีที่แยกสิ่งต่าง ๆ ออกมามากที่สุด ข้อเสียคือว่านี่เป็นทั้ง verbose และเปราะ ทำให้การตั้งค่าการกำหนดค่าที่ใช้บ่อยที่สุดคือ global / static นี่เป็นวิธีที่ง่ายที่สุด แต่แนะนำให้ดำเนินการในระยะไกลเป็นอุปสรรคต่อการทดสอบและถือว่าการกำหนดค่านั้นเป็นระดับโลกอย่างแท้จริง (ซึ่งคุณต้องการเพียงหนึ่งการกำหนดค่าในเวลาที่กำหนด) สร้างคลาสการกำหนดค่า / โครงสร้างที่มีตัวเลือกการกำหนดค่าทั้งหมดสำหรับโปรแกรมทั้งหมดหรือสำหรับข้อกังวลหลัก ๆ ภายในโปรแกรมจากนั้นส่งผ่านสิ่งนี้อย่างชัดเจน สิ่งนี้ชัดเจนน้อยกว่า (1) แต่ชัดเจนกว่า (2) หากคุณต้องการเปลี่ยนการตั้งค่าสำหรับการเรียกใช้ฟังก์ชั่นเดียวคุณสามารถโคลนวัตถุกำหนดค่าและเปลี่ยนค่านี้ได้ สิ่งนี้มีประโยชน์ทั้งในการทดสอบและในทางปฏิบัติ อย่างไรก็ตามคุณยังคงสามารถส่งข้อมูลจำนวนมากไปยังฟังก์ชั่นที่ไม่ต้องการและเปลี่ยนค่าในคลาส / โครงสร้าง config ยังสามารถทำให้เกิดการกระทำที่ระยะไกล คุณจะพิจารณา (3) รูปแบบหรือรูปแบบการต่อต้านหรือไม่? หากเป็นรูปแบบการต่อต้านคุณจะทำอย่างไรแทน

7
วิธีจัดการกับปัญหาการคอมไพล์โค้ดฐานขนาดใหญ่?
แม้ว่าฉันสามารถเขียนโค้ดได้ แต่ฉันยังไม่มีประสบการณ์ในการทำงานในโครงการขนาดใหญ่ สิ่งที่ฉันทำจนถึงตอนนี้ก็คือการเขียนโปรแกรมขนาดเล็กที่รวบรวมในไม่กี่วินาที (แบบฝึกหัด c / c ++ ต่าง ๆ เช่นอัลกอริทึมหลักการเขียนโปรแกรมแนวคิดแนวความคิดหรือเพียงแค่ลอง api ... ) หรือทำงานในโครงการขนาดเล็กบางโครงการ ทำในภาษาสคริปต์ (python, php, js) โดยไม่จำเป็นต้องรวบรวม สิ่งนี้คือเมื่อโค้ดในภาษาสคริปต์เมื่อใดก็ตามที่ฉันต้องการลองสิ่งที่ใช้ได้ผลฉันแค่เรียกใช้สคริปต์และดูว่าเกิดอะไรขึ้น หากสิ่งต่าง ๆ ไม่ทำงานฉันสามารถเปลี่ยนรหัสและลองใหม่อีกครั้งโดยเรียกใช้สคริปต์อีกครั้งและทำต่อไปเรื่อย ๆ จนกว่าฉันจะได้ผลลัพธ์ตามที่ฉันต้องการ .. ประเด็นของฉันคือคุณไม่ต้องรอ อะไรก็ตามที่จะรวบรวมและเพราะมันค่อนข้างง่ายที่จะใช้ฐานรหัสขนาดใหญ่ดัดแปลงแก้ไขเพิ่มบางอย่างเข้ากับมันหรือเล่นกับมัน - คุณสามารถเห็นการเปลี่ยนแปลงได้ทันที เป็นตัวอย่างฉันจะใช้ Wordpress มันค่อนข้างง่ายที่จะลองและคิดวิธีการสร้างปลั๊กอินสำหรับมัน ก่อนอื่นคุณต้องเริ่มต้นด้วยการสร้างปลั๊กอิน "Hello World" อย่างง่ายจากนั้นคุณสร้างอินเทอร์เฟซที่ง่ายสำหรับผู้ดูแลระบบเพื่อทำความคุ้นเคยกับ API จากนั้นคุณสร้างมันขึ้นมาและทำให้สิ่งที่ซับซ้อนมากขึ้นในเวลาที่เปลี่ยนไป ครั้ง .. ความคิดที่จะต้องคอมไพล์บางสิ่งที่ยิ่งใหญ่เท่า WP ซ้ำแล้วซ้ำอีกหลังจากการเปลี่ยนแปลงเล็กน้อยแต่ละครั้งเพื่อลอง "ถ้ามันได้ผล" และ "การทำงาน / รู้สึกอย่างไร" …

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