การพัฒนา C # แยกออกจาก IDE ที่คุณใช้อย่างมีประสิทธิภาพหรือไม่


41

ฉันเป็นโปรแกรมเมอร์ Python ที่เรียนรู้ C # ที่พยายามหยุดกังวลและเพียงรัก C # ในสิ่งที่มันเป็นมากกว่าที่จะเปรียบเทียบกับ Python อย่างต่อเนื่อง

ฉันจมอยู่ในจุดหนึ่ง: การขาดความชัดเจนเกี่ยวกับสิ่งที่กำหนดไว้ตามรายละเอียดในคำถาม Stack Overflowนี้ กล่าวโดยย่อ: ใน C # using fooไม่ได้บอกคุณว่าชื่อfooมีการใช้งานซึ่งคล้ายกับfrom foo import *ใน Python - รูปแบบที่ท้อแท้ภายในวัฒนธรรมการเข้ารหัสของ Python สำหรับการบอกเป็นนัยมากกว่าวิธีที่ชัดเจนfrom foo import barกว่า

ฉันค่อนข้างจะประทับใจกับคำตอบของ Stack Overflow จากโปรแกรมเมอร์ C # ซึ่งในทางปฏิบัติแล้วการขาดความชัดเจนไม่สำคัญเพราะใน IDE ของคุณ (สมมุติว่า Visual Studio) คุณสามารถโฮเวอร์เหนือชื่อและได้รับการบอกเล่าจาก ระบบที่ชื่อมาจาก เช่น:

ทีนี้ในทางทฤษฎีฉันรู้ว่านี่หมายถึงเมื่อคุณมองด้วยโปรแกรมแก้ไขข้อความคุณไม่สามารถบอกได้ว่าประเภทมาจากอะไรใน C # ... แต่ในทางปฏิบัติฉันไม่พบว่าเป็นปัญหา คุณดูรหัสจริงและไม่สามารถใช้ Visual Studio บ่อยแค่ไหน

นี่เป็นการเปิดเผยต่อฉัน โปรแกรมเมอร์ Python หลายคนชอบวิธีแก้ไขข้อความในการเขียนโปรแกรมโดยใช้ Sublime Text 2 หรือ vim ซึ่งมีทุกอย่างเกี่ยวกับโค้ดรวมถึงเครื่องมือบรรทัดคำสั่งและการเข้าถึงโดยตรงและจัดการโฟลเดอร์และไฟล์ แนวคิดของการพึ่งพา IDE เพื่อให้เข้าใจโค้ดในระดับพื้นฐานนั้นดูเหมือนจะเป็นการสาปแช่ง ดูเหมือนว่าวัฒนธรรม C # นั้นแตกต่างอย่างสิ้นเชิงในจุดนี้ และฉันสงสัยว่าฉันต้องยอมรับและยอมรับว่าเป็นส่วนหนึ่งของการเรียนรู้ C # หรือไม่

ซึ่งทำให้ฉันคำถามของฉันที่นี่: การพัฒนา C # แยกออกไม่ได้อย่างมีประสิทธิภาพจาก IDE ที่คุณใช้หรือไม่


7
Python เป็นภาษาแบบไดนามิก, C # พิมพ์แบบคงที่ (เช่น Java) ดังนั้นวิธีที่คุณรหัสในทั้งสองแตกต่างกันมาก
Oded

6
@Oded: using MyType = MyNamespace.MyType;?
pdr

4
ฉันไม่รู้ว่ามันเป็นอย่างไรใน Python แต่ใน C # คุณสามารถเริ่มต้นglobal::และทำงานจากที่นั่นได้ตลอดเวลา usingไม่ได้ทำให้มีอะไรที่ไม่เคยมีมาก่อน มันช่วยให้เข้าถึงได้ง่ายขึ้นเท่านั้น
CVn

5
"โปรแกรมเมอร์ Python หลายคนชอบวิธีแก้ไขข้อความในการเขียนโปรแกรมโดยใช้ Sublime Text 2 หรือ vim ซึ่งเป็นเรื่องเกี่ยวกับโค้ดรวมถึงเครื่องมือบรรทัดคำสั่งและการเข้าถึงและจัดการโฟลเดอร์และไฟล์โดยตรง" - ซึ่งฟังดูไร้ประสิทธิภาพอย่างน่ากลัวสำหรับฉัน IDE เป็นเครื่องมือที่ช่วยให้คุณทำงานได้มากขึ้น แน่ใจว่าคุณสามารถสร้างบ้านด้วยค้อนและเลื่อยมือและตัดต้นไม้ด้วยตัวคุณเอง แต่ฉันคิดว่าคุณจะมีเวลาที่เร็วขึ้นกว่านี้ด้วยเครื่องมือไฟฟ้าและซื้อไม้ตัดแต่งก่อน
Andy

2
@Andy - ฉันเห็นมันฟังดูเป็นอย่างนั้น แต่เครื่องมือแก้ไขข้อความเหล่านี้มีประสิทธิภาพมากจริง ๆ แล้วนำเสนอคุณลักษณะด้านเครื่องมือและโปรแกรมเมอร์ที่มีประสิทธิภาพมากมาย มันเป็นวิธีที่แตกต่างอย่างสิ้นเชิงในการเข้าถึงและการใช้เครื่องมือและคุณลักษณะเหล่านั้นไม่ใช่ IDE (และอาจเหมาะสำหรับภาษา / วัฒนธรรมการเขียนโปรแกรมบางอย่างมากหรือน้อย)
Ghopper21

คำตอบ:


26

Visual Studio สะดวกสบายมากหลังจากทำงานกับมันมาระยะหนึ่งแล้วมันก็ยากที่จะใช้ IDE ตัวอื่น มันมีเครื่องมือที่มีประโยชน์มากมายและมีปลั๊กอินให้ใช้ดังนั้นจริงๆแล้วมันมีคุณสมบัติทุกอย่างที่คุณต้องการ

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

การพัฒนา C # แยกออกไม่ได้อย่างมีประสิทธิภาพจาก IDE ที่คุณใช้หรือไม่

ในทางทฤษฎีไม่มี แต่จริง ๆ แล้วใช่ เป็นไปได้ที่จะเขียนใน C # โดยใช้โปรแกรมแก้ไขข้อความและบรรทัดคำสั่ง แต่ถ้าคุณมี Visual Studio คุณจะไม่ทำสิ่งนี้ ในความเป็นจริงโปรแกรมเมอร์น้อยมากที่เคยรันโค้ด C # จากบรรทัดคำสั่ง

BTW หากคุณรู้สึกไม่สะดวกusing fooคุณสามารถใช้เส้นทางทั้งหมดเมื่อใช้งานประเภท


9
SharpDevelop และ MonoDevelop เป็น IDEs ทางเลือกสำหรับ Visual Studio
Oded

@Oded ฉันไม่เคยใช้มัน แต่มันน่าสนใจที่จะดู ขอบคุณ))
superM

ขอบคุณ superM - คุณสามารถให้ความหลากหลายของคุณสมบัติที่ทำให้ Visual Studio เป็นสิ่งที่ขาดไม่ได้ใช่ไหม ฉันรู้ว่ามันมีโค้ดที่สมบูรณ์มาก แต่มีอะไรอีกบ้าง มันเหมือน Eclipse สำหรับ C # มากขึ้นหรือน้อยลงหรือมีบางสิ่งที่เฉพาะเจาะจงมากขึ้นเกี่ยวกับเรื่องนี้ที่นักพัฒนา C # พึ่งพา?
Ghopper21

2
@ Ghopper21: ฉันอยากจะแนะนำว่ามันเปรียบได้กับ IntelliJ มากกว่า Eclipse (โดยเฉพาะอย่างยิ่งเมื่อคุณรวม Resharper) ยกเว้นว่าในโลก. NET ปลั๊กอินชุมชนมักจะเขียนสำหรับ Visual Studio
สาธารณรัฐประชาธิปไตยประชาชนลาว

5
+1: ฉันเห็นด้วยในขณะที่คุณสามารถเขียนโค้ดที่บรรทัดคำสั่งด้วย notepad คุณจะเป็นคนงี่เง่าที่ไม่สนใจเครื่องมือที่ VS หรือ Sharp Develop นำมาสู่ตาราง
Binary Worrier

33

แนวคิดของการพึ่งพา IDE เพื่อให้เข้าใจโค้ดในระดับพื้นฐานนั้นดูเหมือนจะเป็นการสาปแช่ง

ไม่ใช่คำถามของการเข้าใจรหัสของคุณ: ให้เวลาเพียงพอคุณสามารถค้นหาตัวแปรที่ถูกต้องได้ด้วยตัวแก้ไขข้อความพื้นฐานหรือแม้แต่ในงานพิมพ์ เท่าที่เข้าใจรหัสไปแล้วการพึ่งพา IDE ไม่มีอยู่จริง

การค้นหาการอ้างอิงของคุณอย่างมีประสิทธิภาพเป็นเรื่องที่แตกต่างอย่างสิ้นเชิง: ฉันชอบความสามารถในการค้นหาการใช้งานตัวแปร Java ใน Eclipse มากพอ ๆ กับที่ฉันชอบค้นหาจุดประกาศใน Visual Studio ทั้ง C # และ C ++ ฉันชอบใช้เวลาในการเขียนโค้ดแทนที่จะมองหาจุดประกาศด้วยตนเอง นี่คล้ายกับการทำคณิตศาสตร์: ฉันสามารถคูณตัวเลขหลายหลักลงบนกระดาษได้ แต่ฉันชอบใช้เครื่องคิดเลขเพื่อช่วยตัวเองหนึ่งหรือสองนาที

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

มีเทคนิคให้คุณเพิ่มขนาดวิกฤติที่ IDE จะมีประโยชน์ ตัวอย่างเช่นคุณสามารถทำตามแผนการตั้งชื่อ (ชื่อฮังการีมีขนาดใหญ่ในโลก C ++ ในบางจุดโดยเฉพาะในหมู่ผู้ปฏิบัติงาน Windows) เคล็ดลับทั่วไปอีกประการหนึ่งคือการกำหนดตัวแปรอินสแตนซ์ที่มีคุณสมบัติthis.แม้จะอยู่ในบริบทที่ไม่ต้องมีการรับรองดังกล่าว

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


1
ฉันควรจะพูดว่า "อ่านรหัสอย่างรวดเร็ว" ... มันค่อนข้างเปลี่ยนใจสำหรับฉันที่จะไม่มีการอ้างอิงทั้งหมดอยู่ในไฟล์ต้นฉบับเดียวกันและแทนที่จะใช้เครื่องมือเพื่อค้นหาการอ้างอิงเหล่านั้น
Ghopper21

5
ไม่ใช่ว่าฉันไม่สามารถเลือกที่จะใช้thisidiosyncratically ได้ แต่การเข้ารหัสไม่ใช่ศิลปะที่โดดเดี่ยวและฉันคิดว่ามันเป็นสิ่งที่ดีที่สุดที่จะปฏิบัติตาม (หรืออย่างน้อยเริ่มต้นด้วย) บรรทัดฐานของวัฒนธรรมการเข้ารหัส - เช่น "Pythonic" กับ Python และ อะไรก็ตามที่เทียบเท่ากับ "C # way" คือกับ C # และชัดเจนจากคำตอบและความคิดเห็นที่นี่ว่าการใช้ IDE ที่ดีเช่น Visual Studio เป็นหัวใจสำคัญของ "C # way" (หากเป็นวิธีที่ถูกต้องในการใส่)
Ghopper21

3
@ Ghopper21 สิ่งที่คุณจะพบกับ C # ไม่ใช่ว่าคุณไม่สามารถเขียนมันได้โดยไม่ใช้ IDE แต่รหัส C # ส่วนใหญ่เขียนด้วย IDE และนักพัฒนาทั้งหมดใช้ IDE นั้น ความจริงนี้รวมกับ intellisense ทำให้นักพัฒนาตกอยู่ในกับดักหน่วยความจำของ google เนื่องจากการศึกษาได้พูดเกี่ยวกับhuffingtonpost.com/2011/07/15/ … "จากการศึกษาของผู้คนที่เข้าถึงดัชนีเว็บขนาดใหญ่ของ Google นั้นมีโอกาสน้อยกว่า เรียกคืนความจริงเมื่อได้รับแจ้งอย่างไรก็ตามพวกเขาจำได้ว่าที่ไหนและอย่างไรในการค้นหาความจริงนั้นออนไลน์ "
จิมมี่ฮอฟฟา

2
@ Ghopper21 ฉันไม่ได้บอกกับดักหน่วยความจำนี้ว่าไม่ดีมันเป็นแหล่งของผลผลิตที่เพิ่มขึ้นอย่างมากสำหรับส่วนใหญ่ซึ่งเป็นเหตุให้เฉพาะผู้ที่มีความทรงจำนาน ๆ เมื่อพวกเขาสามารถจดจำ API ทั้งหมดที่พวกเขาทำงานด้วยบ่นจริง ๆ ฉันแค่ชี้ให้เห็นเพราะความจริงข้อนี้ส่งผลโดยตรงต่อโค้ด C # ที่คุณจะอ่านและสไตล์และวัฒนธรรมของการพัฒนา C #
จิมมี่ฮอฟฟา

1
ฉันไม่เคยลงไปที่ไบออส / dos ระดับต่ำมาก แต่ภาษา / สภาพแวดล้อมแรกของฉันคือ Borland TurboPascal; และฉันอาจจะจำได้ถึง 90% ของภาษา / ไลบรารีมาตรฐานที่หนึ่ง ข้อยกเว้นหลักที่เกี่ยวข้องกับการล้มเหลวอย่างสมบูรณ์ในการหาสิ่งที่ OO ควรจะเกี่ยวกับ
Dan Neely

8

โปรแกรมเมอร์ Python หลายคนชอบวิธีแก้ไขข้อความในการเขียนโปรแกรมโดยใช้ Sublime Text 2 หรือ vim ซึ่งมีทุกอย่างเกี่ยวกับโค้ดรวมถึงเครื่องมือบรรทัดคำสั่งและการเข้าถึงโดยตรงและจัดการโฟลเดอร์และไฟล์

เยี่ยมมาก แต่มันพลาดจุดของ VS IDE จุดประสงค์ของ IDE เช่น VS คือการสนับสนุนการพัฒนาอย่างรวดเร็วผ่านเครื่องมือรหัสที่แข็งแกร่งเช่นการปรับโครงสร้างและ intellisense VS เป็นตัวแก้ไขที่ดีมากสำหรับรหัส C #

ตอนนี้ C # ให้คุณเขียนโค้ดในสไตล์ที่ขึ้นกับ IDE ในระดับที่สูงขึ้น (คุณสามารถใช้varคำหลักจำนวนมากและสิ่งที่คล้ายกัน) บางคนชอบที่จะชัดเจนมากขึ้นเช่นโดยใช้นามแฝง namespace เพื่อให้ชัดเจนว่า namespace ที่ชั้นเป็นของ (เช่นimportใน Java หรือ Python) นั่นเป็นตัวเลือกรูปแบบการเขียนมากกว่าคุณสมบัติของภาษา

เนื่องจาก C # ถูกพิมพ์แบบสแตติก (แม้ว่าจะมีส่วนขยายแบบไดนามิกบางส่วนในขณะที่ v4) มันค่อนข้างง่ายที่จะค้นหาว่ามีการอ้างอิงประเภทใด - หากพวกเขาผิดรหัสจะไม่รวบรวมและ VS ไม่ใช่ IDE เพียงตัวเดียว ด้วยการสนับสนุนสำหรับ C # intellisense มันอาจจะดีที่สุด

การพัฒนา C # โดยไม่มี IDE (เช่น VS) ที่มีประสิทธิภาพนั้นค่อนข้างเหมือนกับการตอกด้วยตะปูด้วยมือเมื่อคุณมีปืนพกอยู่ในระดับสูงสุด - อาจมีเวลาแปลก ๆ ที่คุณต้องทำ แต่ผู้เชี่ยวชาญใช้เครื่องมือที่เหมาะสมสำหรับงาน .

ฉันพูดแบบเดียวกันก็อาจเป็นจริงของ Java เช่นกัน หากมี IDE ที่ทรงพลังพร้อมเครื่องมือ intellisense และ code refactor ออกมาคุณควรจะใช้มัน

อย่างไรก็ตามลองดูอีกทางหนึ่ง - หากคุณไม่ต้องการให้มีการตรวจสอบรหัสเวลาและรวบรวมการวิเคราะห์รหัส / การปรับโครงสร้างใหม่ IDE IDE ที่มีป่องนั้นไม่ใช่วิธีที่จะไปและไม่ใช่ภาษาที่พิมพ์แบบคงที่ ฉันคิดว่ามันเป็นอีกทางหนึ่ง:

โปรแกรมเมอร์จำนวนมากที่ชอบวิธีแก้ไขข้อความเพื่อเข้ารหัสไม่ได้รับมากจากภาษาที่พิมพ์แบบคงที่ (เช่น C # และ Java) และอาจดีกว่าถ้าพวกเขายึดติดกับไดนามิกเช่น Python และ Javascript

ฉันคิด:

  • ภาษาแบบไดนามิกเหมาะกับเครื่องมือที่มีน้ำหนักเบา (IDEs รุ่นหนาให้ประโยชน์น้อยกว่าที่นี่)
  • ภาษาแบบคงที่เหมาะกับ IDE ที่มีประสิทธิภาพ (เครื่องมือสามารถช่วยให้รหัสในราคาที่ยืดหยุ่น)

+1 สำหรับคำพูดที่กลับรายการ
fbmd

5

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

วิธีนี้มีข้อดีและข้อเสียหลายประการซึ่งอาจโต้แย้งได้ในระยะเวลา (เช่นพิจารณาข้อดีข้อเสียของแพลตฟอร์มแบบเปิดและปิดเช่นพีซีกับ Xbox) แต่ในตอนท้ายของวันเครื่องมือจาก Microsoft เป็นสิ่งที่ดีที่สุด คนใช้ บริษัท ยังแสดงให้เห็นว่าการตัดสินใจของพวกเขามักจะเป็นกระบวนการ "ให้คุณค่าสูงสุดแก่ผู้ใช้ส่วนใหญ่ของเรา" กระบวนการมักจะมองหาการประนีประนอมในทางปฏิบัติ (เมื่อเร็ว ๆ นี้ - พิจารณาtypescript ) ดังนั้นโดยทั่วไปฉันไม่แปลกใจที่พบว่าการพัฒนา C # เป็น / ทำได้โดยใช้เครื่องมือ (VS) ในใจ


โดยวิธีการมันอาจจะเป็นที่ถกเถียงกันอยู่ว่างูใหญ่เป็นของตนเอง monoculture จากนั้นก็ยึดมั่นกับสิ่งที่ถือเป็น "Pythonic" ในรูปแบบการเข้ารหัสและวิธีการและหลักการออกแบบภาษาหลักของการมีวิธีที่ถูกต้องชัดเจนที่จะทำสิ่งหนึ่ง ฉันมักจะคิดว่าการเขียนโปรแกรมแบบ monocultures ในแง่นี้อาจดีมากเพราะมันสร้างชุมชนที่เชื่อมโยงกันและรหัสที่แชร์ได้ เป็นเพียงแค่ (แย่เกินไปและ / หรือโอกาสที่จะขยายความคิดของฉัน?) ว่าวัฒนธรรม Python และ C # นั้นแตกต่างกันมาก ... !
Ghopper21

2
@ Ghopper21 นั่นเป็นจุดที่ดีมากเกี่ยวกับ Python ผมคิดว่ารุ่น MS ของ "ควรจะมีเพียงหนึ่งเดียววิธีที่ชัดเจนที่จะทำมัน" ขยายไปถึงทางเลือกของ IDE :)
แดเนียล B

4

สำหรับหนึ่ง C # ไม่ใช่ Python .. มีวิธีการออกแบบที่แตกต่างกัน

ตอนนี้เพื่อตอบคำถามของคุณคุณสามารถใช้ Python-esque โดยใช้คำสั่งได้อย่างสมบูรณ์

using FooBar=MyName.Foo.FooBar; 

มันแค่ไม่ใช่บรรทัดฐานแน่นอนเพราะมันไม่ง่ายเลย อย่างไรก็ตามฉันคิดว่าคุณควรกังวลน้อยลงเกี่ยวกับการรู้ว่าแต่ละชั้นมาจากไหน ฉันไม่เข้าใจจุดทั้งหมดของการทำเช่นนี้ใน Python

และ C # เป็นภาษาที่ให้ยืมตัวเองดีกับการใช้ IDE เพื่อให้ง่ายขึ้น Intellisense นั้นใช้งานง่ายอย่างน่าอัศจรรย์โดยเฉพาะเมื่อเปรียบเทียบกับภาษาแบบไดนามิกเช่น Ruby และ Python อย่างไรก็ตามคุณไม่จำเป็นต้องติดกับ IDE ของคุณ ฉันเคยได้ยินคนที่ใช้ Eclipse นอกจากนี้ยังมีหลักสูตร MonoDevelop (ซึ่งฉันใช้บ่อยมาก) และคุณสามารถทำงานได้จากบรรทัดคำสั่ง บนเซิร์ฟเวอร์ของฉันในบางครั้งฉันจะแก้ไขไฟล์ C # ด้วยviและจากนั้นใช้xbuildเพื่อสร้างใหม่ ... มันเป็นเพียงการใช้ IDE ที่ทำให้สิ่งต่าง ๆ ง่ายขึ้นมากเมื่อเทียบกับบรรทัดคำสั่งสำหรับกรณีทั่วไป


4

ทุกคนรำคาญที่จะอ่านทางลงที่นี่?

ฉันสรุปด้วยการพูดว่าการทำงานของ IDE ที่ซับซ้อนอย่างยิ่งนั้นเป็นสิ่งที่ขาดไม่ได้และมันจะ (ควร) พัฒนาไปสู่ ​​Zen of Sublime VimNess ในบางวัน ....

ซอฟต์แวร์ของเราคือ 129 โครงการประมาณ 2 ล้าน LOC เพิ่มความหนาแน่นของกรอบงาน. NET และให้สิ่งนี้ทั้งหมดที่ฉันสามารถพูดได้ว่า IDE มีความสำคัญยิ่งกว่าการสร้างแรงจูงใจให้กับคำถามของเธรดนี้

เจาะลึกฐานรหัส

ระยะเวลา คุณรู้คุณสมบัติที่เรากำลังพูดถึง ยกเว้นความสะดวกสบายที่ขาดไม่ได้และจำเป็นกับประเภทของรหัสฐานที่ฉันจัดการ

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

แต่ความฉลาดนี้ก็มากเกินไปในบางครั้ง ฉันมักจะใช้การค้นหาข้อความ "ค้นหาในไฟล์" แบบเก่า

การเข้ารหัสช่วย

ที่นี่ฉันมักจะร้องไห้ "พอ!" ลองนึกภาพหน้าจอที่เต็มไปด้วยสีโหลของส่วนใหญ่คลุมเครือตัวแปรบางอย่างที่เน้นทุกที่วงเล็บปีกกาเน้นปิดบังสิ่งที่รั้งจริงคือขีดเส้นใต้ขดทุกที่เพราะ "มัน" ต้องการให้ฉันเขียนวรรณกรรมไม่ใช่รหัสไอคอนสำหรับเมนูบริบท Resharper (คุณ เพียงแค่คลิกมัน! จากนั้นเพิกเฉยได้เป็นส่วนใหญ่) ความช่วยเหลือที่เป็นเอกลักษณ์ของ popup ซึ่งประกอบไปด้วย 2/3 ของหน้าจอในแนวนอนแนวตั้งแสดงการโอเวอร์โหลดหลายอันในแนวตั้งป๊อปอัพเนื่องจากสิ่งที่คุณเพิ่งปล่อยเคอร์เซอร์เมาส์ .... ไม่เห็นแม้แต่รหัส & ^!% บรรทัด * s * ที่ฉันใช้งานอยู่!

Vis.Stud ต้องใช้การออกแบบที่เรียบง่ายเพื่อให้ฉันสามารถมุ่งเน้นไปที่การเข้ารหัสและไม่ผ่านหลายร้อย (พันถ้าคุณนับทุกการตั้งค่าการเข้ารหัสสีและปลั๊กอินเหล่านั้น) ของการตั้งค่าในการต่อสู้ที่สูญเสียเพื่อเรียกคืนสติ A " Pareto " ที่สำคัญจะดี


1
ชื่นชมความคิดของคุณจริงๆที่นี่เพราะคุณดูเหมือนจะ "เข้าใจ" ในแง่ของทั้ง IDE และ "Sublime VimNess" ฉันอยู่กับคุณในทุกสิ่งที่คุณพูดที่นี่ นี่คือความหวังว่ามันจะผ่านไป
Ghopper21

3

การพัฒนา C # แยกออกไม่ได้อย่างมีประสิทธิภาพจาก IDE ที่คุณใช้หรือไม่

ไม่แน่นอน ทำไมคุณไม่นำเข้าเนมสเปซทั้งหมด? ทางเลือกของการใช้ IDE แบบรวมหรือโปรแกรมแก้ไขข้อความไม่เกี่ยวข้องกับสิ่งนั้น การนำเข้าเนมสเปซทั้งหมดไม่ได้ทำให้ยากต่อการอ่านรหัสหรือใช้งาน

จำไว้ว่า C # เป็นภาษาที่พิมพ์ หากคุณนำเข้าเนมสเปซหลายรายการที่มีคลาสเดียวกันคุณจะได้รับข้อผิดพลาดในการรวบรวม

โดยส่วนตัวฉันไม่ได้ใช้การประกาศประเภทที่มีมากในทางใดทางหนึ่ง ฉันใช้varคำหลักแทนด้วยเหตุผลที่ฉันอธิบายที่นี่: http://blog.gauffin.org/2012/08/to-var-or-not-to-var-is-that-reest-/question/


1
ปัญหาคือการอ่านไม่ได้เขียนรหัส (คำถาม Stack Overflow ที่ฉันลิงค์ไปด้านบนเป็นตัวอย่าง) เมื่ออ่านโค้ดคุณจะรู้ได้อย่างไรว่ามีบางอย่างมาจากไหน ด้วย Python คุณสามารถค้นหาการนำเข้าอย่างชัดเจน (สมมติว่ารหัสเป็นไปตามอนุสัญญา Python ที่แข็งแกร่งสำหรับการใช้การนำเข้าดังกล่าว) ด้วย C # ดูเหมือนว่าฉันทามติคือในทางปฏิบัติคุณใช้ IDE เช่น VS
Ghopper21

หากคุณไม่ทราบว่ามาจากไหนคุณจะต้องค้นหาวิธีการใช้งาน เพียง google msdn <classname>และคลิกที่ลิงค์แรก ที่นั่นคุณได้รับ namespace ด้วย
jgauffin

วิธีการดังกล่าวแสดงให้เห็นถึงความแตกต่างทางวัฒนธรรม ไม่ใช่โปรแกรมเมอร์ของ Python ที่ไม่ใช่ google แน่นอนว่ามันเป็นเพียงวิธีคิดที่แตกต่าง
Ghopper21

ในบันทึกย่อที่แยกต่างหาก var ใน C # เป็นทางลัดซินแท็กซ์น้ำตาล / คอมไพเลอร์ที่ดีที่ฉันชอบสำหรับการทำโค้ดให้ละเอียดน้อยลงและซ้ำซ้อน แค่หวังว่าคุณจะสามารถใช้มันได้ทุกที่ไม่ใช่แค่ในวิธีการ
Ghopper21

@ Ghopper21: ใช่ฉันรู้ ประเด็นของฉันคือดัชนี google MSDN ค่อนข้างดีและคุณจะได้รับเอกสารโดยตรงจากการทำเช่นนั้น ดังนั้นคุณไม่จำเป็นต้องจัดทำเอกสารทุกคลาสที่คุณใช้โดยรวมทั้งเส้นทางทั้งหมด
jgauffin

1

ความเข้าใจของฉันคือใน Python "สาธารณะทุกอย่าง" หรือบางสิ่งบางอย่างเพื่อผลกระทบนั้น ใน C # ผู้ออกแบบโมดูลจะตัดสินใจว่าอะไรเป็นสาธารณะและอะไรไม่ได้ดังนั้นเมื่อคุณทำimportคุณจะได้รับ API สาธารณะเท่านั้น นั่นอาจเป็นสาเหตุของความแตกต่างที่คุณอธิบาย


นั่นเป็นข้อแตกต่างอย่างมากระหว่าง Python และ C # แต่ก็ไม่ได้ช่วยให้ฉันเข้าใจว่าทำไมการขาดการนำเข้าอย่างชัดเจน ตามที่ @ pbr ระบุไว้ในความคิดเห็นของเขา Java (ซึ่งมีความแตกต่างของสาธารณะ / ส่วนตัว) คล้ายกับ Python ในการกำหนดลักษณะทางวัฒนธรรมสำหรับการนำเข้าที่ชัดเจน
Ghopper21

5
@ Ghopper21 - เหตุผลเดียวที่จะชอบการนำเข้าที่ชัดเจนใน Java (และ C ++ เป็นต้น) คือการป้องกันการชนชื่อ C # ได้ตัดสินใจออกแบบเพื่อจัดการกับปัญหานี้ผ่านนามแฝงการนำเข้า / ประเภทเนื่องจากพวกเขาจัดการได้ดีขึ้นเมื่อคุณมีการชนกันของชื่อพร้อมกับประโยชน์ของการไม่มีการนำเข้าสำเร็จรูปจำนวนมากที่มาจากแหล่งข้อมูลของคุณ
Telastyn

1

การพัฒนา C # แยกออกไม่ได้อย่างมีประสิทธิภาพจาก IDE ที่คุณใช้หรือไม่

ที่งานก่อนหน้าของฉันฉันใช้ vim to code เป็นภาษาต่างๆเช่น C #, JavaScript, Powershell, Perl, C ++ และนักพัฒนาบางส่วนที่เคยทำสิ่งที่คล้ายกัน โครงการใหญ่เกินไปสำหรับ Visual Studio

ที่กล่าวว่านักพัฒนา C # ส่วนใหญ่จัดการกับโครงการขนาดเล็กมากและยินดีที่จะใช้ VS


0

นี่คือมุมมองที่น่าสนใจในการพัฒนา C # สิ่งที่คุณถามนอกเหนือไปจาก C # หากคุณกำลังถามเกี่ยวกับ IDE

อย่างที่คุณพูดใน Python คุณสามารถใช้เครื่องมือแก้ไขต่าง ๆ เพื่อเขียนโค้ดของคุณ คุณสามารถทำได้ด้วย. NET Framework เช่นกัน นอกจากนี้ยังมีเครื่องมือ IDE อื่น ๆ ที่คุณสามารถใช้เช่น SharpDevelop Visual Studio นั้นได้รับการพัฒนาร่วมกันอย่างแน่นหนากับ. NET Framework และค่อนข้างแพง มีเครื่องมืออย่างเช่น SharpDevelop และ VS รุ่น "Express" เพื่อดึงดูดนักพัฒนาให้ใช้. NET โดยพื้นฐานแล้ว IDE ทั้งหมดทำเพื่อคุณคือการจัดสภาพแวดล้อมที่เป็นระเบียบโดยปกติจะมีระบบ Intellisense ส่วนเสริมสำหรับผลผลิตและ "ตัวช่วย" เพื่อรวบรวมสิ่งที่สามารถจบลงด้วยการเป็นบรรทัดคำสั่งที่ดูน่ากลัวมาก สิ่งนี้เป็นจริงสำหรับ Java เครื่องมือเช่น Eclipse เพียงแค่ให้การปรับปรุงองค์กรและเพิ่มประสิทธิภาพการผลิตสำหรับเรา ภายใต้ประทุนไม่มีอะไรวิเศษเกิดขึ้นจนกว่าคุณจะสร้างหรือรวบรวมโครงการของคุณและให้ความเคารพ

เมื่อคุณพูดถึงคำสั่ง "ใช้" ใน C # และเปรียบเทียบกับ Python มันไม่ใช่สิ่งเดียวกันภายใต้ประทุน คอมไพเลอร์ใช้คำสั่งที่ใช้เพื่อช่วยในการแปลงรหัส C # เป็น MSIL ใน MSIL ไม่มีคำสั่ง "นำเข้าคลาสเหล่านี้ทั้งหมดจาก namespace นี้" โดยรหัสเวลาอยู่ที่ระดับ MSIL คลาสทั้งหมดจะถูกแท็กด้วยชื่อแบบเต็ม คำสั่ง "ใช้" และ "นำเข้า" เหล่านี้มีไว้เพื่อช่วยให้มนุษย์สามารถอ่านได้ คำสั่งเหล่านี้ไม่ใช่คำสั่งการปรับให้เหมาะสมที่สุดของคอมไพเลอร์ หลังจากทั้งหมด "การติดแท็กชื่อที่ผ่านการรับรองครบถ้วน" เริ่มต้นแล้วอาจมี "minify" ระดับต่ำใน FQNs แต่นี่คือเพื่อช่วยให้คอมไพเลอร์ / ล่ามทำงานได้เร็วขึ้น

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

HTH


คำสั่ง 'ใช้' และ 'นำเข้า' เหล่านี้เพื่อช่วยให้มนุษย์สามารถอ่านได้ " - ใช่นั่นคือความแตกต่างทางปรัชญาที่สำคัญในการทำงานที่นี่ ความสามารถในการอ่านในระดับข้อความเป็นหลักการออกแบบ Python ลำดับที่หนึ่งที่สำคัญ C # ไม่ต้องการอย่างเคร่งครัด แต่ใช้ IDE ที่ดีอย่าง VS เพื่อให้สามารถอ่านได้ อนึ่ง "การนำเข้า" ใน Python นั้นเป็นมากกว่าความสามารถในการอ่านซึ่งแตกต่างจาก "การใช้" ใน C #
Ghopper21

0

ฉันคิดว่าในอดีตคำตอบนั้นค่อนข้างดีใช่แล้ว - การพัฒนา C # และทำงานอย่างมีประสิทธิภาพในทุกสิ่งนอก Visual Studio, Xamarin หรือ SharpDevelop นั้นเป็นประสบการณ์ที่ไม่พึงประสงค์มากเกินไป

แต่เมื่อเร็ว ๆ นี้มีโครงการจำนวนมากเกิดขึ้นซึ่งทำให้ง่ายขึ้นเช่น:

OmniSharpให้รากฐานสำหรับการ intellisense และ refactoring พร้อมด้วยเสียงเรียกเข้า emacs อะตอมและปลั๊กอินประเสริฐ ฉันไม่ได้ใช้มันจริง ๆ ดังนั้นฉันจึงไม่รู้ว่ามันใช้งานได้ดีแค่ไหน แต่มันก็ดูดี

Yeoman ASP.NET MVC generatorsช่วย bootstrap โครงการ MVC ใหม่ (อาจมีตัวกำเนิดอื่น ๆ อยู่)

paketเป็นทางเลือกแทน NuGet ที่คุณสามารถเพิ่มแพ็กเกจ NuGet ลงในโครงการของคุณจากบรรทัดคำสั่งและอัปเดตไฟล์. csproj ของคุณ (แม้ว่าจะมีเครื่องมือบรรทัดคำสั่ง NuGet จริง ๆ แล้วการอัพเดตโครงการเพื่อใช้แพคเกจเป็นส่วนหนึ่งของ IDE การรวมกันไม่ใช่เครื่องมือบรรทัดคำสั่ง)

Paket มีความหมายว่าคุณต้องปรับซอร์สโค้ดของคุณให้ใช้มันดังนั้นถ้าคุณนั่งในฐานะสมาชิกคนเดียวในทีมและต้องการใช้โปรแกรมแก้ไขข้อความสำหรับการเข้ารหัสและทุกคนใช้ Visual Studio คุณจะต้องโน้มน้าวให้ทุกคน อื่นเพื่อปรับแก้ปัญหาให้ตรงกับความต้องการของคุณ :(

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


-1

ไม่อีกแล้ว:

http://www.omnisharp.net/

OmniSharp เป็นตระกูลของโครงการโอเพนซอร์ซโดยมีเป้าหมายเดียว - เพื่อให้การพัฒนา. NET ที่ยอดเยี่ยมในตัวเลือกที่คุณเลือก

มันสนุกที่จะบอกว่า Cross Platform .NET แต่มันมีเหตุผลสำหรับคนที่จะพัฒนา. NET โดยไม่ต้อง Visual Studio และ Windows?

มันสนุกไหมที่จะทำ. NET บนเครื่อง Mac ใน Sublime? Ubuntu และ Emacs? Windows และ Atom คุณสามารถใช้เครื่องมือแก้ไขของคุณ PLUS เพื่อใช้คุณสมบัติที่ยอดเยี่ยมเช่น Intellisense (ไม่เพียง แต่เติมข้อความอัตโนมัติ), เพิ่มการอ้างอิง, จัดรูปแบบเอกสารและอื่น ๆ อีกมากมาย พัฒนาได้ทุกที่ใช้งานได้ทุกที่ (และถึง Azure!)

ฉันได้ทดสอบสิ่งนี้ด้วย subime3 และ osx

ตัวอย่างเพิ่มเติมได้ที่

http://blog.jonathanchannon.com/2014/11/12/csharp-first-class-citizen-sublime-text/


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