มีปรัชญาการเขียนโปรแกรม Windows หรือไม่ [ปิด]


30

ฉันเขียนโปรแกรมทั้งใน Unix และ Windows ส่วนใหญ่ฉันทำงานใน Unix ซึ่งฉันได้เรียนรู้ปรัชญา Unixซึ่งสามารถสรุปได้ดังนี้

  • เขียนโปรแกรมที่ทำสิ่งหนึ่งและทำได้ดี
  • เขียนโปรแกรมเพื่อทำงานร่วมกัน
  • เขียนโปรแกรมเพื่อจัดการสตรีมข้อความเนื่องจากเป็นอินเตอร์เฟสสากล

ดูเหมือนว่าจะมีความแตกต่างที่ชัดเจนในวัฒนธรรมการเขียนโปรแกรมระหว่างโลก Unix และ Windows เช่น:

  • GUI เทียบกับ CLI
  • ไฟล์ Registry vs config
  • เครื่องมือจำนวนมากที่มีความเชี่ยวชาญสำหรับความต้องการใด ๆ เทียบกับกลุ่มของเครื่องมือมุมฉากทั่วไปซึ่งสามารถรวมกันได้

มี "ปรัชญา Unix" ใน Windows หรือไม่ สิ่งที่โปรแกรมเมอร์ Unix สามารถเรียนรู้จาก Windows หรือควรระวังเมื่อย้ายไปเขียนโปรแกรมใน Windows

ฉันต้องการคำตอบเพื่อมุ่งเน้นการปฏิบัติที่ดีที่สุดของการเขียนโปรแกรม Windows (และไม่ใช่การต่อสู้ระหว่าง Windows และ Unix)


15
ควรระวังอะไรบ้าง? "สิ่งต่าง ๆ จะดูดดูดแย่"
Orbling

3
ปรัชญาเดียวเท่านั้นที่ไม่มีปรัชญา ;)
Mudassir

6
อันที่จริง Powershell นำบางส่วนของปรัชญา Unix มาไว้ใน Windows โดยเฉพาะการเขียนโปรแกรมขนาดเล็ก (จริง ๆ แล้ว cmdlets ใน Powershell) ที่ทำสิ่งเดียวเท่านั้นและรวมเข้ากับ cmdlet อื่นที่ทำสิ่งอื่น แน่นอนว่าผู้ใช้ทั่วไปส่วนใหญ่ยังไม่รู้วิธีใช้ Powershell แต่ประเภทนี้ขึ้นอยู่กับซอฟต์แวร์ที่คุณเขียน
JohnL

4
เราจะทำให้ถูกต้องในครั้งที่สาม
aufather

7
ปรัชญาของ Windows คือการนำรายได้มาสู่ Microsoft
dan04

คำตอบ:


28

จริงๆแล้วมีบางอย่างเช่น "ปรัชญาของ Windows" ส่วนใหญ่เป็นเรื่องเกี่ยวกับแนวคิดการจัดองค์ประกอบและโปรแกรมส่วนการออกแบบส่วนติดต่อผู้ใช้สำหรับผู้ใช้ที่ไม่ได้สำหรับโปรแกรมเมอร์อื่น ๆ

นั่นหมายความว่า:

  • ส่วนต่อประสานผู้ใช้ที่เรียบง่ายและใช้งานง่าย
  • กระบวนการทำงานตามธรรมชาติ
  • ควรใช้งานนอกกรอบ
  • ไม่จำเป็นต้องมีความรู้ด้านเทคนิคในที่ซึ่งไม่จำเป็น

นี่คือการอ่านที่ดี:

Biculturalism

ด้วยการเพิ่มจำนวนของ Windows วิธีแฮกเกอร์ในการเขียนโปรแกรมเริ่มกลายเป็นไม่พึงประสงค์ เริ่มแรกก็คือการเขียนโปรแกรม C / C ++ ในลักษณะที่ซับซ้อนและซับซ้อนที่สุดเพื่อให้สมองที่ยากที่สุดเท่านั้นที่สามารถเข้าใจพวกมันเป็นพิธีทาง ภายใต้สิ่งต่าง ๆ ของ Windows เริ่มมีการเปลี่ยนแปลงและตอนนี้ "รูปแบบโค้ด" ไม่เป็นที่น่าพอใจ ไม่แน่ใจว่า Windows Direct มีอิทธิพลต่อหรือค่อนข้างมีระดับความเข้าใจในคุณภาพของรหัสใหม่ แต่อย่างน้อยก็ตรงเวลา


7
ฉันไม่คิดว่าสัญลักษณ์แสดงหัวข้อย่อยใด ๆ เหล่านั้นใช้ได้กับ Windows โดยเฉพาะ
Tom Hawtin - tackline

4
@Tom: มันเป็นปรัชญา มันไม่จำเป็นต้องใช้กับอะไร อย่างไรก็ตามฉันเชื่อว่ามันใช้ได้ดีกับทุกสิ่งในโลก Windows
Allon Guralnek

@Tom ฉันเห็นด้วยกับ @Allon มากขึ้นเพราะสำหรับฉันดูเหมือนว่าคำถามของ OP คือการเขียนโปรแกรม Console และ GUI มากกว่า
gideon

6
อะไร?!? ดูที่แหล่งข้อมูล BSD และ AT&T เก่า ๆ สะอาดเรียบง่ายสง่างาม และฉันไม่เคยเห็นอะไรที่สับสนเกินกว่ารหัส MFC ป่องทั่วไป
SK-logic

แม้ยากไม่มีคำตอบที่ถูกต้องฉันชอบคำนี้ดีที่สุด โพสต์บล็อกของ Joel นั้นยอดเยี่ยมมาก
Maglob

8

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

ผู้ใช้ทั่วไปไม่ต้องการจดจำการตั้งค่าสถานะบรรทัดคำสั่งต่าง ๆ โหลเพื่อเรียกใช้โปรแกรม พวกเขาต้องการคลิกที่ปุ่ม

ผู้ใช้ทั่วไปไม่ต้องการที่จะกังวลเกี่ยวกับไฟล์การกำหนดค่าระบบของพวกเขาหรือวิธีที่ Fluffy Kitt จดจำสายพันธุ์แมวตัวโปรดของพวกเขา

โดยทั่วไปผู้ใช้ที่ไม่เป็นทางการจะใช้บางสิ่งบางอย่างตราบเท่าที่มันทำในสิ่งที่ต้องการแม้ว่าจะมีผลิตภัณฑ์ "ดีกว่า" ให้ใช้งาน

ผมคิดว่าจุดหลักของฉันที่นี่คือ ... Windows เป็นอย่างมากเกี่ยวกับการสร้างสำหรับผู้ใช้มากกว่าผู้สร้าง อย่าขัดแย้งกับกระบวนทัศน์อันยาวนานที่มีอยู่ในการพัฒนา Windows อย่าสร้างความรำคาญให้กับผู้ใช้ My Documents ด้วยอึหรือใส่ตัวคุณเองในการเริ่มต้นโดยไม่มีเหตุผล

อาจมีความสำคัญที่คล้ายกัน: เขียนเอกสารผู้ใช้


7
เอกสารประกอบสำหรับผู้ใช้? ผู้ใช้โปรแกรมที่ประสบความสำเร็จไม่จำเป็นต้องแตะเอกสารใด ๆ เลย

@Developer Art - นี่เป็นประเด็นจริง แต่เมื่อคุณเขียนซอฟต์แวร์เพื่อพูดฟิสิกส์ของอนุภาคที่ต้องเข้าใจโดยผู้คนในหลายเชื้อชาติความสามารถในการพูด "คลิกที่นี่เพื่ออธิบายสิ่งที่เราทำกับข้อมูลของคุณ ที่นี่ "ถ้าง่ายกว่าเขียนคอมพิวเตอร์กระแสจิตที่จะสามารถดึงความคาดหวังของผู้ใช้ออกมาได้
TZHX

3
"อย่าสร้างมลภาวะผู้ใช้ด้วยอึ" - แดกดันค่อนข้าง
ocodo

1
Slomojo งั้นเหรอ?
TZHX

8

บล็อกของ Raymond Chen, The Old New Thingและหนังสือของเขาที่มีชื่อเดียวกันคือความเข้าใจอย่างลึกซึ้งเกี่ยวกับปรัชญาประวัติศาสตร์และแนวปฏิบัติที่ดีที่สุดของการเขียนโปรแกรม Windows ดั้งเดิม


4

ประนีประนอมและปรับแต่ง

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

ดีพอสำหรับผู้ใช้ที่จะเริ่มต้น

มีบางสิ่งที่ปรากฎออกมานอกกรอบ แต่สิ่งต่าง ๆ ส่วนใหญ่ใช้งานได้ Unix มีแนวโน้มที่จะไปในทิศทางที่ไม่มีอะไรทำงานจนกว่าคุณจะกำหนดค่าและ Apple ทำให้ทุกอย่างเรียบร้อยสวย แต่ค่าใช้จ่ายในการกำหนดค่า / ความยืดหยุ่นบางอย่าง

คาดว่าหางบันทึกการสนับสนุน

ผู้ใช้ Windows จะไม่อัปเกรดเพียงเพราะมีรุ่นที่ใหม่กว่า พวกเขาไม่เคยอัพเกรดเพราะช่องโหว่หรือข้อผิดพลาด ผู้ใช้ Windows มักจะต้องถูกบังคับให้อัพเกรด แต่ถ้าคุณบังคับให้พวกเขาอัพเกรดอย่างรวดเร็วพวกเขาจะค้นหาผลิตภัณฑ์ทางเลือก

ผู้ใช้มีระดับทักษะหลากหลาย

Unix มีอุปสรรคการรับรู้สูงถึงรายการจากระดับเทคนิคจากมุมมองของผู้ใช้ตามบ้านที่ไม่เป็นทางการ แอปเปิลมีระดับทักษะที่จำเป็นในการรับรู้ต่ำมาก แต่ไม่สนับสนุนให้ผู้ใช้ที่ไม่เป็นทางการทำอะไรได้มากนักในการปรับแต่งระบบปฏิบัติการ Windows กำลังอยู่ระหว่าง เป็นการเริ่มต้นที่ยากกว่าการใช้เพียงเล็กน้อยกว่าผลิตภัณฑ์ของ Apple แต่มีข้อมูลจำนวนมากที่พร้อมใช้งานบางครั้งอยู่ในตัวติดตั้งเองเกี่ยวกับวิธีเปลี่ยนการตั้งค่าระบบในเชิงลึก สิ่งนี้นำไปสู่ระดับทักษะที่ค่อนข้างสุ่มในระดับกลางของผู้ใช้เพราะถ้าพวกเขามั่นใจพอที่จะลองสิ่งที่มีโอกาสที่ดีพวกเขาสามารถหาวิธีที่จะทำ นอกจากนี้ยังทำให้ผู้ใช้ที่ขี้อายยิ่งไม่มีประสบการณ์ในบางกรณีเพราะพวกเขาระวังคำเตือนว่าสิ่งที่ฉันทำผิดไป


3

Windows สร้างขึ้นด้วยการสนับสนุนอย่างชัดเจนสำหรับมาตรฐาน Common User Access (CUA) ของ IBMเพื่อเป็นแนวทางในการพัฒนาแอปพลิเคชัน

ซึ่งแน่นอนว่าเป็นความพยายามในการสร้างประสบการณ์แบบ Mac ให้กับผู้ใช้


2

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


1

ฉันไม่แน่ใจว่ามันเป็นปรัชญาหรือไม่ แต่ IMHO มีความหนาแน่นของความคิดที่เข้ากันได้กับการเขียนโปรแกรม Windows นอกจากนี้ยังมีความประหลาดใจที่บางครั้งสิ่งต่าง ๆ ทำงาน

ฉันขอแนะนำให้ใช้ความอดทนถ้าคุณยอมรับการพัฒนา Windows และใส่ใจกับสมมติฐานของคุณมากขึ้น

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