วิศวกรรมซอฟต์แวร์

ถาม - ตอบสำหรับมืออาชีพนักวิชาการและนักเรียนที่ทำงานในวงจรการพัฒนาระบบ

3
โครงการ Forking GPL: ฉันมีสิทธิ์เต็มในการแยกใหม่หรือยังคงขึ้นอยู่กับเจ้าของเดิม
ฉันกำลังพิจารณาการสร้างทางแยกให้กับโครงการขนาดเล็กที่ได้รับอนุญาตภายใต้GPLv2และฉันมีคำถามที่เฉพาะเจาะจงบางอย่างที่ฉันไม่ได้จัดการเพื่อตอบในการวิจัยของฉันในเว็บไซต์และฟอรัมต่างๆ เมื่อฉันแยกรหัสฉันถูกบังคับให้ปล่อยตัวโครงการใหม่ภายใต้ใบอนุญาตเดียวกัน (GPL) ที่ฉันจะทำ แต่ฉันสามารถตัดสินใจที่จะปล่อยภายใต้ใบอนุญาตแบบสองใบซึ่งเป็นหนึ่งในเชิงพาณิชย์หรือไม่ เมื่อดำเนินการโครงการฉันจะเป็นเจ้าของลิขสิทธิ์โดยอัตโนมัติของสิ่งทั้งหมดหรือไม่ นี้มีความเกี่ยวข้องเมื่อยกตัวอย่างเช่นการตัดสินใจการเปลี่ยนแปลงในอนาคตในใบอนุญาตหรือเพื่อให้สามารถที่จะบังคับใช้ใบอนุญาต GPL ไป 3 ถบุคคล
34 gpl 

6
พลังการแสดงออกที่เฉพาะเจาะจงหมายถึงอะไร?
พลังความหมายถูกกำหนดโดย Wikipedia ในฐานะ: .. ความกว้างของความคิดที่สามารถเป็นตัวแทนและสื่อสารในภาษานั้น "ความคิด" หมายถึงสิ่งต่าง ๆ (การดำเนินงานโครงสร้างอัลกอริธึม ฯลฯ ) เราสามารถสื่อสารกับเครื่องได้หรือไม่? หรือมันอ้างถึงแนวคิด "มนุษย์" ที่สามารถบันทึกและสื่อสารกับภาษากับคนอื่น ๆ ? พลังงานที่แสดงออกได้ประเมินและวัดค่าอย่างไร ตัวอย่างเช่นหากเราใช้ภาษาเช่น JavaScript และกำหนดข้อ จำกัด แปลก ๆ สำหรับชื่อตัวแปรเช่นตัวแปรต้องเป็นตัวเลข 8 หลักที่นำหน้าด้วยขีดล่างการจับคู่/^_[0-9]{8}$/เราจะสูญเสียพลังในการแสดงออกหรือไม่? หรือจะว่าเพียง แต่จะไร้สาระและน่ารำคาญ? เพื่อชี้แจง: อำนาจการแสดงออกที่วัดโดยความคิดทั่วไปที่มีอยู่ในภาษา: จำนวนเต็มและสตริง ลูป เงื่อนไข หรือหมายเลขของเฉพาะความคิดที่ไม่ซ้ำกันว่าภาษาที่สามารถเป็นตัวแทน: จำนวนเต็ม 1, 2 ... 2 ^ 32 สตริงที่มี "สุนัขจิ้งจอกพูดว่าอะไร" และ "wha pah pah pah pah …

6
เหตุใดภาษาการเขียนโปรแกรมที่ใช้งานได้บางภาษาจึงใช้พื้นที่สำหรับแอปพลิเคชันฟังก์ชั่น
เมื่อมองไปที่บางภาษาสำหรับการเขียนโปรแกรมการทำงานฉันมักจะสงสัยว่าทำไมบางภาษา fp จึงใช้อักขระช่องว่างอย่างน้อยหนึ่งตัวสำหรับแอปพลิเคชันฟังก์ชัน (และคำจำกัดความ) ในขณะที่ภาษาเชิงวัตถุ / เชิงวัตถุส่วนใหญ่ เป็นวิธีทางคณิตศาสตร์มากขึ้น ฉันคิดว่าสไตล์หลังมีความชัดเจนและอ่านง่ายกว่าที่ไม่มีการเลียนแบบ ดังนั้นถ้าเรามีฟังก์ชั่นf (x) = x²มีสองทางเลือกในการเรียกมันว่า: FP: f x ตัวอย่าง: ML, Ocaml, F # Haskell LISP โครงการ (อย่างใด) Non-FP: f(x) ตัวอย่าง: เกือบทุกภาษาที่จำเป็น (ฉันรู้ว่าเห็นความเห็น / คำตอบ) Erlang Scala (อนุญาตให้ "สัญกรณ์ตัวดำเนินการ" สำหรับอาร์กิวเมนต์เดี่ยว) อะไรคือสาเหตุของการ "ลาออก" วงเล็บคืออะไร?

7
RESTful API มีแนวโน้มที่จะสนับสนุนโมเดลโดเมนโลหิตจางหรือไม่
ฉันกำลังทำงานในโครงการที่เราพยายามใช้ทั้งการออกแบบที่ขับเคลื่อนด้วยโดเมนและ REST กับสถาปัตยกรรมที่มุ่งเน้นบริการ เราไม่กังวลเกี่ยวกับการปฏิบัติตาม REST 100% อาจเป็นการดีกว่าถ้าจะบอกว่าเรากำลังพยายามสร้าง HTTP API ที่เน้นการใช้ทรัพยากร (~ ระดับ 2ของแบบจำลองวุฒิภาวะ REST ของ Richardson) แต่เรากำลังพยายามที่จะอยู่ห่างจากการใช้ RPC-รูปแบบของการร้องขอ HTTP เช่นเราพยายามที่จะดำเนินการของเรา HTTP กริยาตามRFC2616มากกว่าที่จะใช้POSTในการทำIsPostalAddressValid(...)เช่น อย่างไรก็ตามการเน้นเรื่องนี้ดูเหมือนว่าจะเป็นค่าใช้จ่ายของความพยายามของเราที่จะใช้การออกแบบที่ขับเคลื่อนด้วยโดเมน มีเพียงGET, POST, PUT, DELETEและไม่กี่วิธีที่ไม่ค่อยได้ใช้อื่น ๆ ที่เรามีแนวโน้มที่จะสร้างบริการ cruddy และบริการ cruddy มีแนวโน้มที่จะมีรูปแบบโดเมนโรคโลหิตจาง POST: รับข้อมูลตรวจสอบความถูกต้องถ่ายโอนข้อมูลไปยังข้อมูล GET: ดึงข้อมูลกลับคืนมา ไม่มีตรรกะทางธุรกิจที่แท้จริงที่นั่น นอกจากนี้เรายังใช้ข้อความ (เหตุการณ์) ระหว่างบริการและดูเหมือนว่าตรรกะทางธุรกิจส่วนใหญ่จะสร้างขึ้นมา REST และ DDD มีความตึงเครียดในบางระดับหรือไม่? (หรือฉันเข้าใจผิดบางอย่างที่นี่เราอาจทำผิดอย่างอื่นหรือไม่) เป็นไปได้ไหมที่จะสร้างโมเดลโดเมนที่แข็งแกร่งในสถาปัตยกรรมเชิงบริการขณะที่หลีกเลี่ยงการโทร HTTP สไตล์ RPC?

3
การพัฒนา Java โดยทั่วไปเกี่ยวข้องกับคลาสย่อยมากกว่า C # /. NET หรือไม่
ฉันเพิ่งเริ่มดูการพัฒนา Android สิ่งนี้นำฉันกลับสู่โลกของการพัฒนาซอฟต์แวร์ Java ครั้งสุดท้ายที่ฉันทำงานกับ Java ฉันจะยอมรับว่าฉันไม่เข้าใจ OOP เท่าที่ฉันคิดตอนนี้ หลังจากใช้งาน C # เป็นส่วนใหญ่ในอาชีพของฉันฉันสังเกตเห็นความแตกต่างที่น่าตกใจในการใช้ Java และ C # ในการสืบทอด ใน C # ดูเหมือนว่าสามารถหลีกเลี่ยงการสืบทอดในสถานการณ์ส่วนใหญ่ งานในมือสามารถทำได้โดยใช้คลาสที่เป็นรูปธรรมของ. NET Framework ใน Java จากสิ่งที่ฉันรวบรวมจากตัวอย่างโค้ดดูเหมือนว่า Java framework จะให้ส่วนต่อประสานหรือคลาสนามธรรมที่มีความหมายที่จะนำไปใช้ / ขยายโดยนักพัฒนา ดูเหมือนว่าจะมีความแตกต่างใหญ่เกินไปที่จะทำให้สไตล์ อะไรคือเหตุผลเบื้องหลังสิ่งนี้ ฉันรู้สึกว่าฉันจะไม่เขียนโค้ด Java ที่สะอาดจนกว่าฉันจะเข้าใจสิ่งนี้ นอกจากนี้ยังมีข้อ จำกัด เพียงแค่ Android SDK หรือนี่เป็นแนวทางแบบกว้าง ๆ ของ OOP หรือไม่? หรือใส่ในอีกทางหนึ่ง มันเกี่ยวกับการออกแบบของสองภาษานี้ที่ดูเหมือนว่าจะส่งเสริมให้ใช้มรดกมากกว่าหรือน้อยกว่าอีก? …

1
การเขียนโปรแกรมแบบตารางคืออะไร
การเขียนโปรแกรมภาษาเหยี่ยวประกาศตัวเองเป็นสนับสนุนการเขียนโปรแกรมแบบตาราง: ฟอลคอนมีกระบวนทัศน์การโปรแกรมมิงแบบรวมหก: ขั้นตอน, เชิงวัตถุ, ต้นแบบเชิง, หน้าที่, ตารางและข้อความ และคุณไม่จำเป็นต้องควบคุมพวกเขาทั้งหมด คุณเพียงแค่ต้องเลือกส่วนผสมที่คุณต้องการและปล่อยให้รหัสติดตามแรงบันดาลใจของคุณ เอกสารขยายบิตเกี่ยวกับวิธีรสชาติของภาษาในการเขียนโปรแกรมตารางทำงาน แต่มุ่งเน้นไปที่ภาษาของเค้าเองและไวยากรณ์และไม่ได้จริงๆอธิบายประโยชน์ของกระบวนทัศน์ (ยกเว้นของหลักสูตรที่จะเห็นได้ชัดจากตัวอย่างง่าย ๆ ) . ฉันบิตสับสนเกี่ยวกับวิธีการสิ่งที่ทั้งทำงานภายในจากสิ่งที่ฉันเข้าใจเหยี่ยวTableเป็นโครงสร้างพื้นเมืองที่ผลงานมากหรือน้อยเป็นตารางสัมพันธ์และสามารถอธิบายได้ (ใน OO พื้นถิ่น) เป็นพื้นเมืองตั้งค่าการบันทึกที่มีความสามารถสอบถามเชิงสัมพันธ์ . ฉันรู้รายละเอียดที่น่ากลัว (ตำหนิ OO รากเหง้าของฉันและโทษของเตกีล่าหลายปี) คุณช่วยให้ฉันได้ความคิดที่ดีขึ้นเกี่ยวกับการเขียนโปรแกรมแบบตารางคืออะไรเกี่ยวกับและมันทำงานอย่างไรภายใน? ชี้แจง:ฉันกำลังไม่ได้ถามเกี่ยวกับตารางแบบการเขียนโปรแกรม
34 paradigms 

3
การเก็บที่เก็บคอมไพล์บนโฮสต์ที่ต่างกันให้ตรงกัน
ฉันกำลังคิดเกี่ยวกับการเริ่มต้นโครงการขนาดเล็กและฉันต้องการสร้างเวอร์ชันด้วย git Bitbucketเป็นตัวเลือกที่ดีสำหรับฉันด้วยแผนการฟรี ฉันต้องการใช้เป็นเครื่องมือหลักในการทำงานกับ git เนื่องจากมีเครื่องมือที่ดีเช่นเว็บอินเตอร์เฟสไคลเอนต์ Mac OS และอื่น ๆ แต่เพื่อให้มีการป้องกันที่สูงขึ้นจากความเสียหายจากอุบัติเหตุใด ๆ ที่อาจเกิดขึ้นจากการใช้บริการของบุคคลที่สามฉันต้องการติดตั้ง git บน NAS ของฉันเป็นสำเนาสำรองที่สองของที่เก็บ ตอนนี้คำถามของฉันคือว่ามันเป็นไปได้ที่จะสร้างพื้นที่เก็บข้อมูลในสองโฮสต์ที่แตกต่างกันและจากนั้นให้พวกเขาซิงค์? ตัวอย่างเช่นสมมติว่าหนึ่งครั้งต่อสัปดาห์ฉันอัปเดตที่เก็บใน NAS ของฉันเพื่อจับคู่กับ Bitbucket จากนั้นในกรณีที่มีบางอย่างเกิดขึ้นกับ Bitbucket ฉันจะยังคงมีพื้นที่เก็บข้อมูลเต็มรูปแบบที่มีประวัติการพัฒนาเต็มรูปแบบบนพื้นที่เก็บข้อมูล NAS ในพื้นที่ของฉัน และมีวิธีการนำเข้าที่เก็บข้อมูลที่มีประวัติเต็มไปยังบริการ git อื่นหรือไม่? ฉันคิดว่าการมิเรอร์เป็นสิ่งที่ฉันต้องการ นี้บทความดูเหมือนว่าจะอธิบายสิ่งที่ฉันต้องการ และนี้อย่างใดอย่างหนึ่งเช่นกัน ฉันเชื่อว่ามันจะทำสำเนาเต็มรูปแบบที่มีประวัติเต็มรูปแบบและยังมอบเวอร์ชันใหม่ให้กับที่เก็บบนโฮสต์ทั้งสองโดยอัตโนมัติ ฉันถูกไหม?
34 git 

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

2
วิธีการปรับปรุงตามรูปแบบของตัวสร้างของ Bloch เพื่อให้เหมาะสมกับการใช้งานในชั้นเรียนที่ขยายได้สูง
ฉันได้รับอิทธิพลอย่างมากจากหนังสือ Java ที่มีประสิทธิภาพของ Joshua Bloch (ฉบับที่ 2) ซึ่งอาจจะมากกว่าหนังสือโปรแกรมที่ฉันอ่าน โดยเฉพาะรูปแบบตัวสร้างของเขา (รายการ 2) มีผลมากที่สุด แม้ผู้สร้างของ Bloch จะช่วยให้ฉันออกไปไกลกว่าเดิมในช่วงสองเดือนกว่าในช่วงสิบปีที่ผ่านมาของการเขียนโปรแกรม แต่ฉันก็ยังพบว่าตัวเองกำลังชนกำแพงเดียวกัน: การขยายชั้นเรียนด้วยโซ่ตรวนวิธีการกลับมาด้วยตนเอง - โดยเฉพาะอย่างยิ่งเมื่อ generics เข้ามาเล่นและโดยเฉพาะอย่างยิ่งกับgenerics อ้างอิงตนเอง (เช่นComparable<T extends Comparable<T>>) มีความต้องการหลักสองประการที่ฉันมีอยู่เพียงข้อที่สองที่ฉันต้องการเน้นในคำถามนี้: ปัญหาแรกคือ "วิธีการแบ่งปันวิธีการส่งกลับโซ่ตนเองโดยไม่ต้องใช้พวกเขาในทุก ... เดียว ... ชั้น?" สำหรับผู้ที่อาจจะอยากรู้อยากเห็นฉันได้กล่าวถึงส่วนนี้ที่ด้านล่างของคำตอบโพสต์นี้ แต่ไม่ใช่สิ่งที่ฉันต้องการมุ่งเน้นที่นี่ ปัญหาที่สองที่ฉันขอความคิดเห็นคือ "ฉันจะสร้างตัวสร้างในชั้นเรียนที่มีความตั้งใจที่จะขยายโดยชั้นเรียนอื่น ๆ อีกมากมายได้อย่างไร" การขยายชั้นเรียนด้วยตัวสร้างนั้นเป็นเรื่องยากกว่าการขยายชั้นเรียนแบบไม่มี การขยายชั้นเรียนที่มีการสร้างเป็นที่ยังดำเนินการNeedableและดังนั้นจึงมียาชื่อสามัญสำคัญที่เกี่ยวข้องกับมันเป็นเทอะทะ นั่นคือคำถามของฉัน: ฉันจะปรับปรุง (สิ่งที่ฉันเรียกว่า) ตัวสร้าง Bloch ได้อย่างไรฉันจึงสามารถแนบตัวสร้างกับคลาสใดก็ได้ - แม้ว่าคลาสนั้นจะมีความหมายว่า "คลาสพื้นฐาน" ที่อาจเป็น …


2
มีตัวชี้วัดสำหรับการทำงานร่วมกันและการมีเพศสัมพันธ์?
มีเมตริกที่คล้ายคลึงกับการวัดความซับซ้อนของ McCabeในการวัดว่าการทำกิจวัตรประจำวันมีความเหนียวหรือไม่และวิธีการที่คู่กันอย่างหลวม ๆ (หรือแน่นหนา) คือรหัสอื่นในฐานรหัสเดียวกันหรือไม่?

8
เหตุใด Clang / LLVM จึงเตือนฉันเกี่ยวกับการใช้ค่าเริ่มต้นในคำสั่ง switch ที่ครอบคลุมทุกกรณีที่แจกแจง?
พิจารณาคำสั่ง enum และ switch ต่อไปนี้: typedef enum { MaskValueUno, MaskValueDos } testingMask; void myFunction(testingMask theMask) { switch (theMask) { case MaskValueUno: {}// deal with it case MaskValueDos: {}// deal with it default: {} //deal with an unexpected or uninitialized value } }; ฉันเป็นโปรแกรมเมอร์ Objective-C แต่ฉันเขียนสิ่งนี้ใน C บริสุทธิ์สำหรับผู้ชมที่กว้างขึ้น Clang / LLVM …

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

7
อาจจะเป็นข้อยกเว้น Monad
ฉันสงสัยว่าอะไรคือข้อดีของMaybe monad ที่มีข้อยกเว้น? ดูเหมือนว่าMaybeเป็นวิธีการทางtry..catchไวยากรณ์ที่ชัดเจน (และค่อนข้างใช้พื้นที่มาก) อัปเดตโปรดทราบว่าฉันตั้งใจจะไม่พูดถึง Haskell

8
JavaScript ควรสร้าง HTML เมื่อใด
ฉันพยายามสร้าง HTML จาก JavaScript ให้น้อยที่สุดเท่าที่จะทำได้ แต่ฉันชอบที่จะจัดการกับมาร์กอัปที่มีอยู่เมื่อใดก็ตามที่ฉันสามารถและสร้าง HTML ได้เฉพาะเมื่อฉันต้องการแทรกองค์ประกอบที่ไม่เหมาะสมสำหรับการใช้ Ajax แบบไดนามิก ฉันเชื่อว่านี่ทำให้การบำรุงรักษาโค้ดทำได้ง่ายกว่าและทำการเปลี่ยนแปลงอย่างรวดเร็วเพราะมาร์กอัพนั้นง่ายต่อการอ่านและติดตาม กฎง่ายๆของฉันคือ: HTML สำหรับโครงสร้างเอกสาร CSS สำหรับงานนำเสนอ JavaScript สำหรับการทำงาน อย่างไรก็ตามฉันเห็นรหัส JS จำนวนมากที่สร้างกอง HTML รวมถึงแบบฟอร์มทั้งหมดและกล่องโต้ตอบโมดัลเนื้อหาที่มีเนื้อหามาก โดยทั่วไปวิธีใดที่ถือว่าเป็นแนวปฏิบัติที่ดีที่สุด JavaScript ควรใช้ในการสร้าง HTML ในสถานการณ์ใดและไม่ควรใช้เมื่อใด
34 javascript  html 

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