ฉันควรใช้เครื่องหมายอัฒภาคเพื่อคั่นงบ Scala หรือไม่


9

ฉันเคยคั่นงบด้วยเครื่องหมายอัฒภาคจาก Java ดังนั้นตามปกติฉันก็ทำในรหัส Scala ด้วย ฉันรู้สึกว่ารหัสนั้นอ่านง่ายขึ้นเพราะเห็นได้ชัดว่าคำสั่งหนึ่งจบลงและอีกอันเริ่มต้นขึ้น แต่หลายครั้งเมื่อฉันโพสต์โค้ด Scala บน SO ดังนั้นโค้ดจะได้รับการแก้ไขเพียงเพื่อลบเครื่องหมายอัฒภาค

  1. ฉันควรใช้เครื่องหมายอัฒภาคหรือไม่ มีแนวทาง "เป็นทางการ" หรือรูปแบบการเข้ารหัสหรือไม่?
  2. มีกรณีที่จำเป็นต้องใช้เครื่องหมายอัฒภาคมิฉะนั้นรหัสจะคลุมเครือหรือไม่

5
Haskell สอนอะไรคุณเลยเหรอ? ; P ลบไวยากรณ์ที่ไม่จำเป็นออก, ควรใช้เครื่องหมายอัฒภาคเพื่อแยกหลายส่วนคำสั่ง / ข้อความในบรรทัดเดียวกันเท่านั้น
Jimmy Hoffa

@JimmyHoffa Haskell สอนฉันว่าไวยากรณ์ต้องสวยงามและสอดคล้องกัน :)
Petr Pudlák

2
ส่วนแรกของนั้นคือทำไมฉันรำคาญเมื่อใดก็ตามที่ฉันเห็นตัวอย่าง Scala ...
จิมมี่ฮอฟฟา

คำตอบ:


9

ไม่มีวิธีที่ "ถูกต้อง" อย่างเป็นทางการในการทำเช่นนี้ แต่ผู้ปฏิบัติงานส่วนใหญ่ละเว้นอัฒภาคทุกที่ที่พวกเขาสามารถทำได้ (ซึ่งเป็นเหตุผลว่าทำไมผู้คนจำนวนมากจึงลบเครื่องหมายอัฒภาคออกมา)

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


ขอบคุณคุณอาจยกตัวอย่าง (หรือสองสาม :) สถานการณ์ที่ซับซ้อนเช่นนี้ได้ไหม?
Petr Pudlák

3
ฉันกลัวว่าฉันจะถูกถามเรื่องนี้ ... การเขียนโปรแกรมใน Scalaแสดงรายการของพวกเขาหลายคนที่ทำให้ฉันประหลาดใจ แต่ฉันไม่มีหนังสือกับฉันในขณะนี้และฉันลืมรายละเอียด นั่นคือจุดที่ผมพยายามที่จะทำให้: ถ้าผมจำได้ว่าสถานการณ์พิเศษเหล่านี้มันจะไม่เลวร้าย แต่มันเป็นฉันมักจะรู้สึกไม่แน่ใจว่าฉันสามารถจริงๆละเว้นอัฒภาค - ดังนั้นฉันทำไม่ได้
Kilian Foth

ฮะ. ฉันไม่เคยเจอสถานการณ์ที่การขาดเครื่องหมายอัฒภาคใน Scala ทำให้ฉันเจ็บ ฉันไม่เคยรวมพวกเขา ฉันยังได้ตั้งโปรแกรม Scala สำหรับสิ่งที่เหมือนงานอดิเรกเท่านั้นดังนั้นบางทีมันอาจกัดฉันไม่ช้าก็เร็ว
KChaloux

4

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

สิ่งที่ควรพิจารณาอีกประการหนึ่งคือ Kilian ยอมรับว่านักพัฒนา Scala ส่วนใหญ่ละเว้นเซมิโคลอนโดยปริยาย คุณคาดหวังว่าจะทำงานร่วมกับรหัสของคนอื่นได้อย่างไรถ้าคุณหลีกเลี่ยงการใช้สำนวนตัวเอง? คุณจะพบว่ามันหนักกว่าที่มันเป็น

ฉันไม่สามารถเน้นได้มากพอที่คุณสมบัติเหล่านี้ของตัวแยกวิเคราะห์ Scala ได้รับเลือกให้สนับสนุนโค้ดที่สะอาดใช้งานได้ใหม่และใช้งานได้ (ในแง่ fp) ใช้ไวยากรณ์ตัวดำเนินการมัดเป็นตัวอย่าง; มันกระตุ้นให้นักพัฒนาให้ชั้นเรียนด้วยวิธีการที่เรียบง่ายจุดประสงค์เดียวซึ่งประกอบเข้าด้วยกันได้ดี ห้องสมุดรวบรวมของ Scala แสดงให้เห็นว่าสามารถทำงานได้อย่างสวยงามเพียงใด Java devs ที่ผ่านการฝึกอบรมแบบคลาสสิกซึ่งยอมรับสิ่งนี้จะมีแนวโน้มที่จะพัฒนานิสัยที่ดีขึ้นและวิธีคิดใหม่เกี่ยวกับรหัสของพวกเขา ผู้ที่ยึดติดกับจุดและวงเล็บเหลี่ยมที่คุ้นเคยทั้งหมดจะพลาด ฉันขอยืนยันว่านี่เป็นความจริงเช่นกันสำหรับผู้ที่ขี้อายเกินกว่าที่จะละทิ้งลำไส้ใหญ่


8
-1 ใช่ถูก "บังคับ" เพื่อเรียนรู้ภาษาเนื่องจากคอมไพเลอร์ gotchas ออกไปอย่างมีสไตล์ด้วย C ++ นอกจากนี้ยังมีหลักฐานเล็ก ๆ น้อย ๆ ที่อยู่เบื้องหลังการยืนยันซึ่งฉันต้องการคำตอบด้วยน้ำเสียงที่มีอคติเช่นนั้น
Telastyn

(1) สิ่งที่ @Telastyn พูด - หากคุณต้องการเรียนรู้ภาษาด้วยวิธีนี้รับแมวพวกเขาชอบนั่งบนคีย์บอร์ดเพราะพวกเขาสนใจเกี่ยวกับการศึกษาของคุณ (2) อัฒภาคถนัดมีอะไรจะทำอย่างไรกับสไตล์ที่สะอาดหรือส่งเสริมให้มัน - ถ้ามีอะไรที่ลดต่ำลงอัฒภาคซ่อนความจริงที่ว่าเหล่านี้เป็นที่แยกจากงบที่จะดำเนินการตามลำดับและอาจมีผลข้างเคียง การทิ้งเครื่องหมายอัฒภาคไว้ในนั้นจะทำให้คุณตระหนักถึงสิ่งนั้นและจึงต้องการสไตล์ที่ใช้งานได้มากกว่า การตัดสินใจจึงเป็นเรื่องทางไวยากรณ์อย่างหมดจด (เช่นสไตล์การแยกวิเคราะห์เป็นต้น)
Eli Barzilay

ในขณะที่ "ถูกบังคับให้เรียนรู้ภาษา" ไม่ได้บิน "การใช้ภาษาตามที่ผู้เขียนต้องการ" และ "เนื่องจากนักพัฒนาซอฟต์แวร์รายอื่นใช้" เป็นจุดอ้างอิงที่สำคัญ การคงรูปแบบที่สอดคล้องกันระหว่างนักพัฒนาหลายคนนั้นมีประโยชน์ จากคำตอบนี้และจาก @Killan Foth's ผู้ดูแลและผู้พัฒนาส่วนใหญ่เห็นได้ชัดว่าเครื่องหมายอัฒภาคเป็นสิ่งที่ไม่เกี่ยวข้อง
Sarah Messer
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.