Apakah pengembangan C # secara efektif tidak dapat dipisahkan dari IDE yang Anda gunakan?


41

Saya seorang programmer Python yang belajar C # yang mencoba berhenti khawatir dan hanya suka C # untuk apa itu, daripada terus-menerus membandingkannya kembali ke Python.

Saya terjebak pada satu titik: kurangnya kesaksian tentang di mana hal-hal didefinisikan, sebagaimana dirinci dalam pertanyaan Stack Overflow ini . Singkatnya: di C #, using footidak memberi tahu Anda nama dari fooapa yang tersedia, yang analog dengan from foo import *Python - bentuk yang tidak disarankan dalam budaya pengkodean Python karena tersirat daripada pendekatan yang lebih eksplisit dari from foo import bar.

Saya agak terkejut oleh jawaban Stack Overflow untuk titik ini dari programmer C #, yang dalam prakteknya kurangnya kesederhanaan ini tidak terlalu penting karena dalam IDE Anda (mungkin Visual Studio), Anda dapat mengarahkan kursor ke nama dan diberi tahu oleh sistem dari mana nama itu berasal. Misalnya:

Sekarang, secara teori saya menyadari ini berarti ketika Anda sedang mencari dengan editor teks, Anda tidak dapat mengetahui dari mana jenis-jenis itu berasal dari C # ... tetapi dalam praktiknya, saya tidak menemukan itu menjadi masalah. Seberapa sering Anda benar-benar melihat kode dan tidak dapat menggunakan Visual Studio?

Ini wahyu bagiku. Banyak programmer Python lebih suka pendekatan editor teks untuk pengkodean, menggunakan sesuatu seperti Sublime Text 2 atau vim, di mana itu semua tentang kode, ditambah alat-alat baris perintah dan akses langsung dan manipulasi folder dan file. Gagasan untuk bergantung pada suatu IDE untuk memahami kode pada tingkat dasar seperti itu tampaknya merupakan kutukan. Tampaknya budaya C # secara radikal berbeda pada titik ini. Dan saya bertanya-tanya apakah saya hanya perlu menerima dan menerima itu sebagai bagian dari pembelajaran saya tentang C #.

Yang mengarahkan saya ke pertanyaan saya di sini: apakah pengembangan C # secara efektif tidak dapat dipisahkan dari IDE yang Anda gunakan?


7
Python adalah bahasa yang dinamis, C # diketik secara statis (seperti Java), jadi cara Anda membuat kode sangat berbeda.
Oded

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

4
Saya tidak tahu bagaimana rasanya di Python, tetapi dalam C # Anda selalu dapat memulai global::dan bekerja dengan cara Anda dari sana. usingtidak menyediakan apa pun yang sebelumnya tidak tersedia; itu hanya membuatnya lebih mudah diakses (seperti dalam mengetik kurang diperlukan untuk menggunakan kelas tertentu).
CVn

5
"Banyak programmer Python lebih memilih pendekatan editor teks untuk pengkodean, menggunakan sesuatu seperti Sublime Text 2 atau vim, di mana itu semua tentang kode, ditambah alat-alat baris perintah dan akses langsung dan manipulasi folder dan file." - Yang kedengarannya sangat tidak efisien bagi saya. IDE adalah alat yang membantu Anda menjadi lebih produktif. Tentu Anda dapat membangun rumah dengan palu dan gergaji tangan dan menebang pohon sendiri, tetapi saya pikir Anda akan memiliki waktu yang lebih cepat dengan beberapa alat listrik dan membeli kayu pra-potong.
Andy

2
@Andy - Saya bisa melihatnya seperti itu. Tetapi editor teks ini sebenarnya sangat kuat, menawarkan banyak fitur efisiensi tooling dan programmer. Ini hanya cara yang sangat berbeda untuk menggunakan dan menggunakan alat-alat dan fitur-fitur itu dari pada IDE (dan yang mungkin lebih atau kurang sesuai untuk bahasa / budaya pemrograman tertentu).
Ghopper21

Jawaban:


26

Visual Studio sangat nyaman sehingga setelah bekerja dengannya sebentar sulit menggunakan IDE yang berbeda. Ini memiliki banyak alat praktis dan banyak plugin yang tersedia, sehingga praktis memiliki setiap fitur yang Anda perlukan.

Di sisi lain, apa pun bahasa yang Anda pelajari, disarankan untuk menggunakan baris perintah di awal, sehingga Anda bisa lebih memahami cara kerjanya. C # bukan pengecualian.

Apakah pengembangan C # secara efektif tidak dapat dipisahkan dari IDE yang Anda gunakan?

Secara teoritis tidak, tetapi praktis ya. Dimungkinkan untuk menulis dalam C # menggunakan editor teks dan baris perintah, tetapi jika Anda memiliki Visual Studio, Anda tidak akan pernah melakukan ini. Sebenarnya sangat sedikit programmer yang pernah mengeksekusi kode C # dari baris perintah.

BTW Jika Anda merasa tidak nyaman dengan using foo, Anda dapat menggunakan seluruh jalur saat menggunakan suatu tipe.


9
SharpDevelop dan MonoDevelop adalah IDE alternatif untuk Visual Studio.
Oded

@Daftar, Saya tidak pernah menggunakannya tetapi menarik untuk melihatnya. Terima kasih))
superM

Terima kasih superM - dapatkah Anda memberikan rasa dari berbagai fitur yang membuat Visual Studio sangat diperlukan? Saya tahu ini memiliki penyelesaian kode yang sangat bagus, tetapi apa lagi? Apakah ini lebih atau kurang seperti Eclipse untuk C #, atau ada sesuatu yang lebih spesifik tentang hal itu yang diandalkan oleh pengembang C #?
Ghopper21

2
@ Ghopper21: Saya akan menyarankan itu lebih sebanding dengan IntelliJ daripada Eclipse (terutama ketika Anda memasukkan Resharper), kecuali bahwa, di dunia .NET, plugin komunitas umumnya ditulis untuk Visual Studio.
pdr

5
+1: Saya setuju, selagi Anda bisa menulis kode di baris perintah dengan notepad, Anda akan menjadi idiot untuk mengabaikan tooling yang dibawakan VS atau Sharp Develop ke tabel.
Binary Worrier

33

Gagasan untuk bergantung pada suatu IDE untuk memahami kode pada tingkat dasar seperti itu tampaknya merupakan kutukan.

Ini bukan masalah memahami kode Anda: diberikan waktu yang cukup, Anda selalu dapat menemukan variabel yang tepat dengan editor teks dasar atau bahkan dalam cetakan. Sejauh memahami kode, ketergantungan IDE benar-benar tidak ada.

Menemukan referensi Anda secara efisien adalah subjek yang sama sekali berbeda: Saya suka kemampuan untuk menemukan penggunaan variabel Java di Eclipse sebanyak saya suka menemukan poin deklarasi di Visual Studio, untuk C # dan C ++. Saya lebih suka menghabiskan waktu saya coding, daripada mencari poin deklarasi secara manual. Ini mirip dengan melakukan matematika: Saya bisa melipatgandakan angka multidigit pada selembar kertas, tetapi saya lebih suka menggunakan kalkulator untuk menghemat satu atau dua menit.

Mulai dari "ukuran kritis" tertentu dari kode, IDE yang baik menjadi sangat berguna terlepas dari bahasa pemrograman. Ukurannya dapat bervariasi dari bahasa ke bahasa, tetapi begitu Anda melewati beberapa ribu baris, memiliki IDE dapat membantu terlepas dari bahasa Anda. Ini lebih berkaitan dengan keterbatasan pikiran manusia daripada dengan bahasa pemrograman tertentu: pada titik tertentu, memori jangka pendek Anda terikat dengan "meluap".

Ada trik yang memungkinkan Anda meningkatkan ukuran kritis di mana IDE menjadi berguna. Misalnya, Anda dapat mengikuti konvensi penamaan (nama-nama Hongaria besar di dunia C ++ di beberapa titik, terutama di kalangan praktisi Windows). Trik umum lainnya adalah mengkualifikasi variabel instan dengan this.bahkan dalam konteks di mana kualifikasi tersebut tidak diperlukan.

Trik-trik ini datang dengan kompromi: hampir pasti, mereka membuat program Anda kurang mudah dibaca dengan mengaburkan nama, atau menyisipkan referensi eksplisit yang ingin disembunyikan oleh enkapsulasi. Dihadapkan pada pilihan, saya memilih kode yang tampak bersih plus sebuah IDE dari pada kode yang kurang bersih minus sebuah IDE. Namun, saya sepenuhnya menyadari bahwa pilihan orang lain mungkin berbeda dari pilihan saya.


1
Saya mungkin harus mengatakan "cepat membaca kode" ... Ini adalah perubahan mental bagi saya untuk tidak memiliki semua referensi di sana dalam file sumber yang sama, dan alih-alih menggunakan alat untuk menemukan referensi tersebut.
Ghopper21

5
Bukannya saya tidak bisa memilih untuk menggunakan secara thisistimewa - tetapi pengkodean bukanlah seni yang terisolasi dan saya pikir yang terbaik adalah mengikuti (atau setidaknya mulai dengan) norma-norma budaya pengkodean - yaitu menjadi "Pythonic" dengan Python dan apa pun yang setara "C # way" dengan C #. Dan jelas dari jawaban dan komentar di sini bahwa menggunakan IDE yang bagus seperti Visual Studio adalah pusat dari "C # way" (jika itu cara yang tepat untuk menjelaskannya).
Ghopper21

3
@ Ghopper21 Hal yang akan Anda temui dengan C # bukan berarti Anda tidak dapat menulisnya tanpa IDE, tetapi sebagian besar kode C # ditulis dalam IDE dan semua pengembang menggunakan IDE itu. Fakta ini dikombinasikan dengan intellisense menyebabkan pengembang jatuh ke dalam jebakan memori google sebagai studi telah berbicara tentang huffingtonpost.com/2011/07/15/... "Menurut temuan studi, orang-orang dengan akses ke indeks web besar-besaran Google cenderung tidak mengingat suatu fakta ketika diminta; namun, mereka ingat di mana dan bagaimana menemukan fakta itu secara online "
Jimmy Hoffa

2
@ Ghopper21 Saya tidak mengatakan jebakan memori ini buruk , ini adalah sumber produktivitas yang sangat meningkat untuk sebagian besar itulah sebabnya hanya mereka yang memiliki ingatan panjang tentang hari-hari ketika mereka dapat menghafal seluruh API yang mereka kerjakan dengan benar-benar mengeluh tentang hal itu. Saya hanya menunjukkan ini karena fakta ini secara langsung mempengaruhi kode C # Anda akan membaca dan gaya dan budaya pengembangan C #.
Jimmy Hoffa

1
Saya tidak pernah benar-benar pergi ke bios / dos API tingkat rendah; tapi bahasa / lingkungan pertamaku adalah Borland TurboPascal; dan saya mungkin ~ 90% dari perpustakaan bahasa / standar dihafal pada satu titik. Pengecualian utama terkait dengan gagal total untuk mengetahui apa yang seharusnya menjadi OO.
Dan Neely

8

Banyak programmer Python lebih suka pendekatan editor teks untuk pengkodean, menggunakan sesuatu seperti Sublime Text 2 atau vim, di mana itu semua tentang kode, ditambah alat-alat baris perintah dan akses langsung dan manipulasi folder dan file.

Itu bagus, tapi itu melewatkan inti dari VS IDE. Inti dari IDE seperti VS adalah dukungan pengembangan cepat melalui alat kode yang kuat seperti refactoring dan intellisense. VS adalah editor yang sangat baik untuk kode C #.

Sekarang C # memungkinkan Anda membuat kode dengan gaya yang bergantung pada IDE-nya secara lebih luas (Anda dapat menggunakan banyak varkata kunci dan sejenisnya). Beberapa orang lebih suka untuk lebih eksplisit, misalnya dengan menggunakan alias namespace untuk menjadi jelas di mana namespace milik kelas (seperti importdi Jawa atau Python). Itu lebih dari pilihan gaya pengkodean daripada fitur bahasa.

Karena C # diketik secara statis (walaupun dengan beberapa ekstensi dinamis, mulai v4) selalu cukup mudah untuk mengetahui jenis apa yang dirujuk - jika salah kode tidak akan dikompilasi, dan VS bukan satu-satunya IDE dengan dukungan untuk C # intellisense. Mungkin itu yang terbaik.

Mengembangkan C # tanpa IDE yang kuat (seperti VS) agak seperti memalu kuku dengan tangan ketika Anda sudah memiliki bagian atas kisaran nailgun - mungkin ada waktu aneh yang perlu Anda lakukan, tetapi para profesional menggunakan alat yang tepat untuk pekerjaan itu .

Saya akan mengatakan hal yang sama mungkin juga berlaku untuk Jawa. Jika ada IDE yang kuat dengan intellisense dan alat kode refactor di luar sana Anda mungkin harus menggunakannya.

Namun, lihatlah sebaliknya - jika Anda tidak ingin intellisense, kompilasi pemeriksaan kode waktu dan analisis-kode / refactoring maka IDE yang membengkak bukanlah cara untuk pergi, dan tidak ada bahasa yang diketik secara statis. Saya pikir itu sebaliknya:

Banyak programmer yang lebih suka pendekatan editor teks untuk pengkodean tidak mendapatkan banyak dari bahasa yang diketik secara statis (seperti C # dan Java) dan jadi bisa lebih baik jika mereka tetap menggunakan yang dinamis seperti Python dan Javascript.

Kupikir:

  • Bahasa dinamis cocok dengan alat ringan (IDE kelas berat memberi lebih sedikit manfaat di sini)
  • Bahasa statis sesuai dengan IDE yang kuat (alat dapat membantu dengan kode dengan biaya fleksibilitas)

+1 untuk kuotasi terbalik.
fbmd

5

Untuk menjawab pertanyaan Anda: meskipun perlahan berubah, lingkungan pengembangan Microsoft sebagian besar merupakan monokultur .

Pendekatan ini memiliki banyak sisi positif dan negatif, yang dapat diperdebatkan secara panjang lebar (misalnya mempertimbangkan pro dan kontra platform terbuka dan tertutup, seperti PC vs Xbox), tetapi pada akhirnya, tooling dari Microsoft adalah yang paling orang-orang menggunakan. Perusahaan juga telah menunjukkan bahwa pengambilan keputusan mereka sering semacam "memberikan nilai yang paling untuk mayoritas pengguna kami" proses, selalu mencari kompromi praktis (paling baru - menganggap Naskah yang diketik ). Jadi pada dasarnya, saya tidak akan terkejut menemukan bahwa pengembangan C # telah / dilakukan dengan tooling (VS) dalam pikiran.


Ngomong-ngomong, dapat dikatakan bahwa Python juga monokulturnya sendiri, yang kemudian memberikan kepatuhan yang kuat terhadap apa yang dianggap "Pythonic" dalam gaya dan pendekatan pengkodean, dan prinsip desain inti bahasa memiliki satu cara yang jelas dan benar untuk melakukan sesuatu. Saya cenderung berpikir pemrograman monokultur dalam pengertian ini bisa sangat baik, karena menciptakan komunitas yang koheren dan kode yang dapat dibagikan. Hanya saja (terlalu buruk? Dan / atau kesempatan untuk memperluas pikiranku?) Sehingga budaya Python dan C # begitu ... berbeda!
Ghopper21

2
@ Ghopper21 Itu poin yang sangat bagus tentang Python. Saya pikir versi MS "harus ada satu, cara yang jelas untuk melakukannya" meluas ke pilihan IDE :)
Daniel B

4

Untuk satu, C # bukan Python .. Ada metodologi desain yang berbeda.

Sekarang, untuk menjawab pertanyaan Anda, sangat mungkin untuk menggunakan pernyataan Python-esque Anda menggunakan.

using FooBar=MyName.Foo.FooBar; 

Hanya saja itu jelas bukan norma karena hampir tidak mudah. Namun, saya pikir Anda tidak perlu khawatir tentang tahu persis di mana tepatnya masing-masing kelas berasal. Saya tidak mengerti seluruh titik melakukannya dengan cara ini di Python.

Dan juga, C # adalah bahasa yang cocok untuk menggunakan IDE agar lebih mudah. Intellisense sangat sederhana untuk diimplementasikan, terutama dibandingkan dengan bahasa dinamis seperti Ruby dan Python. Namun, Anda tidak harus terjebak pada IDE Anda. Saya pernah mendengar orang menggunakan Eclipse. Ada juga tentu saja MonoDevelop (yang saya gunakan cukup banyak), dan Anda bahkan dapat bekerja dari baris perintah. Pada server saya kadang-kadang, saya akan mengedit file C # dengan vidan kemudian menggunakan xbuilduntuk membangunnya kembali ... Hanya saja menggunakan IDE membuat segalanya lebih mudah dibandingkan dengan baris perintah untuk kasus-kasus tertentu.


4

Adakah yang mau membaca di sini ??

Saya meringkas dengan mengatakan fungsionalitas IDE yang masif yang kompleks sangat diperlukan dan akan (harus) berevolusi menjadi Zen VimNess Sublime suatu hari nanti ....

Perangkat lunak kami adalah 129 proyek dengan sekitar 2M LOC. Tambahkan kekerangkauan dari kerangka NET. Dan diberikan ini yang bisa saya katakan adalah IDE sangat penting, melampaui motivasi pertanyaan thread ini.

Wawasan ke dalam Pangkalan Kode

Periode. Anda tahu jenis fitur yang sedang kita bicarakan; kecuali bahwa kenyamanannya menjadi sangat diperlukan dan esensial dengan jenis basis kode yang saya tangani.

Saya menulis kode yang lebih baik karena IDE. Saya selalu menambahkan pesan khusus ke tes Nunit saya karena mudah, cepat dan akurat. Saya menyukai enumerasi daripada string karena sebagian besar ke intellisense. Saya tidak ragu untuk menggunakan penamaan deskriptif / panjang - pernyataan multi-baris dibuat cepat dan bersih.

Tetapi bahkan kecerdasan ini terkadang terlalu banyak. Saya sering menggunakan pencarian teks "temukan dalam file" yang lama.

Bantuan pengkodean

Di sinilah aku sering menangis "cukup!". Bayangkan layar penuh dengan selusin warna yang sebagian besar tidak jelas, beberapa variabel tertentu disorot di mana-mana, sorot penjepit mengaburkan apa sebenarnya penjepitnya, berlekuk-lekuk menggarisbawahi di mana-mana karena "ia" ingin saya menulis literatur bukan kode, ikon untuk menu konteks Resharper (Anda cukup klik saja! abaikan saja), tanda tangan bantuan popup yang membentang 2/3 layar secara horizontal, secara vertikal menampilkan beberapa kelebihan, sebuah popup karena di mana Anda kebetulan meninggalkan kursor mouse .... Saya bahkan tidak dapat melihat & ^!% baris * s * kode yang saya kerjakan!

Vis.Stud. perlu merangkul minimalis sehingga saya bisa fokus pada pengkodean dan tidak melalui ratusan (ribuan jika Anda menghitung setiap pengaturan pengkodean warna dan semua plugin itu) dari pengaturan dalam pertempuran yang hilang untuk merebut kembali kewarasan. Sebuah " Pareto " kunci akan menjadi besar.


1
Benar-benar menghargai pikiran Anda di sini, karena Anda tampaknya benar-benar "mengerti" dalam hal pendekatan IDE dan "Keagungan Sublime" untuk berbagai hal. Saya dengan Anda dalam semua yang Anda katakan di sini. Inilah harapan yang akan terjadi.
Ghopper21

3

Apakah pengembangan C # secara efektif tidak dapat dipisahkan dari IDE yang Anda gunakan?

Tentu saja tidak. Mengapa Anda tidak mengimpor seluruh namespace? Pilihan menggunakan IDE atau editor teks terintegrasi tidak ada hubungannya dengan itu. Mengimpor seluruh namespace tidak membuatnya lebih sulit untuk membaca kode atau menggunakannya.

Ingat, C # adalah bahasa yang diketik. Jika Anda mengimpor beberapa ruang nama dengan kelas yang sama Anda akan mendapatkan kesalahan kompilasi.

Saya pribadi tidak menggunakan tipe deklarasi sebanyak itu. Alih-alih, saya menggunakan varkata kunci sebagai ganti alasan yang saya jelaskan di sini: http://blog.gauffin.org/2012/08/to-var-or-not-to-var-is-that-really-the-question/


1
Masalahnya adalah membaca bukan menulis kode. (Pertanyaan Stack Overflow yang saya tautkan di atas memberikan contoh.) Saat membaca kode, bagaimana Anda tahu dari mana sesuatu berasal? Dengan Python, Anda dapat mencari impor eksplisit (dengan asumsi kode mengikuti konvensi Python yang kuat untuk menggunakan impor tersebut). Dengan C #, tampaknya konsensus adalah bahwa dalam praktiknya Anda menggunakan IDE seperti VS.
Ghopper21

Jika Anda tidak tahu dari mana kelas itu berasal, Anda harus mencarinya untuk mengetahui cara kerjanya. Cukup google msdn <classname>dan klik tautan pertama. Di sana Anda mendapatkan namespace juga.
jgauffin

Pendekatan itu mencontohkan perbedaan budaya. Bukan berarti programmer Python tidak melakukan hal-hal google - tentu saja mereka lakukan - itu hanya cara berpikir tentang hal yang berbeda.
Ghopper21

Pada catatan terpisah, var di C # adalah cara pintas sintaksis gula / kompiler yang bagus yang saya suka untuk membuat kode kurang verbose dan berulang. Andai saja Anda bisa menggunakannya di mana saja, tidak hanya di dalam metode.
Ghopper21

@ Ghopper21: Ya, saya tahu. Maksud saya adalah bahwa indeks google MSDN cukup baik dan Anda akan mendapatkan dokumentasi langsung dengan melakukannya. Karenanya Anda benar-benar tidak perlu mendokumentasikan setiap kelas yang Anda gunakan dengan memasukkan seluruh path ke sana.
jgauffin

1

Pemahaman saya adalah bahwa dengan Python, "semuanya publik" atau semacamnya. Dalam C #, perancang modul memutuskan apa yang publik dan apa yang tidak, jadi ketika Anda melakukannya, importAnda hanya mendapatkan API publik. Itu bisa menjadi alasan perbedaan yang Anda gambarkan.


Itu jelas perbedaan besar antara Python dan C #, tetapi itu tidak benar-benar membantu saya memahami mengapa ada kurangnya kesederhanaan dalam impor. Seperti @pbr catat dalam komentarnya, Java (yang juga memiliki perbedaan publik / pribadi) mirip dengan Python dalam preferensi budayanya untuk impor eksplisit.
Ghopper21

5
@ Ghopper21 - Satu-satunya alasan untuk lebih memilih impor eksplisit di Jawa (dan C ++ misalnya) adalah untuk mencegah tabrakan nama. C # membuat keputusan desain untuk mengatasi masalah ini melalui impor / alias, karena mereka lebih baik menangani ketika Anda benar - benar memiliki tabrakan nama bersama dengan manfaat karena tidak memiliki banyak impor boilerplate yang mengacaukan sumber Anda.
Telastyn

1

Apakah pengembangan C # secara efektif tidak dapat dipisahkan dari IDE yang Anda gunakan?

Pada pekerjaan saya sebelumnya saya kebanyakan menggunakan vim untuk kode dalam bahasa seperti C #, JavaScript, Powershell, Perl, C ++, dan beberapa pengembang dulu melakukan hal yang serupa. Proyek itu terlalu besar untuk Visual Studio.

Yang mengatakan, sebagian besar pengembang C # berurusan dengan proyek yang jauh lebih kecil dan cukup senang menggunakan VS.


0

Ini adalah pandangan yang menarik tentang pengembangan C #. Apa yang Anda tanyakan melampaui C #, jika Anda bertanya tentang IDE.

Seperti yang Anda katakan, dengan Python, Anda dapat menggunakan berbagai editor untuk menulis kode Anda. Anda bisa melakukannya dengan framework .NET juga. Ada juga alat IDE lain yang dapat Anda gunakan seperti SharpDevelop. Visual Studio sangat erat dikembangkan bersama dengan .NET framework dan relatif mahal. Alat-alat seperti SharpDevelop dan versi "Express" dari VS ada untuk menarik lebih banyak pengembang untuk menggunakan .NET. Intinya semua yang dilakukan IDE untuk Anda adalah menyediakan lingkungan yang terorganisir, biasanya dengan intellisense, add-ons untuk produktivitas dan "penolong" untuk mengumpulkan apa yang akhirnya menjadi baris perintah yang tampak sangat menakutkan untuk diteruskan ke kompiler Anda. Hal yang sama berlaku untuk Java, alat seperti Eclipse hanya menyediakan peningkatan produktivitas dan organisasi bagi kami. Di bawah tenda, tidak ada yang ajaib terjadi sampai Anda membangun atau menyusun proyek Anda dan rasa hormat itu,

Ketika Anda berbicara tentang pernyataan "menggunakan" dalam C # dan membandingkannya dengan Python, itu tidak benar-benar hal yang sama terjadi di bawah tenda. Pernyataan menggunakan digunakan oleh kompiler untuk membantu upaya itu dalam mengubah kode C # menjadi MSIL. Di MSIL, tidak ada arahan "impor semua kelas ini dari namespace ini". Dengan kode waktu berada di tingkat MSIL, semua kelas telah ditandai dengan nama mereka yang sepenuhnya memenuhi syarat. Pernyataan "menggunakan" dan "impor" ini untuk membantu keterbacaan manusia. Mereka bukan perintah optimisasi kompiler. Setelah semua "penandaan nama yang memenuhi syarat" awal ini telah berjalan, mungkin ada semacam "minify" tingkat rendah untuk FQNs tetapi ini adalah untuk membantu kompiler / juru bahasa untuk mengeksekusi lebih cepat.

Satu perbedaan mendasar terakhir antara semua bahasa yang disebutkan di sini adalah bahwa beberapa dari mereka ditafsirkan oleh VM, beberapa ditafsirkan gaya JIT dan beberapa sepenuhnya dikompilasi. Bagaimana arahan penggunaan ini diterapkan di semua kompiler dan juru bahasa itu sangat berbeda.

HTH.


"Pernyataan 'menggunakan' dan 'impor' ini untuk membantu keterbacaan manusia." - ya, itulah perbedaan filosofis utama yang bekerja di sini. Keterbacaan pada tingkat tekstual adalah prinsip utama desain Python orde pertama. C # tidak benar-benar perlu, tetapi secara praktis mengandalkan IDE yang bagus seperti VS agar "dapat dibaca". Kebetulan, "impor" dengan Python juga lebih dari tentang keterbacaan, tidak seperti "menggunakan" di C #.
Ghopper21

0

Saya pikir secara historis jawabannya cukup banyak, ya - mendapatkan pengembangan C # dan berjalan secara efektif dalam apa pun di luar Visual Studio, Xamarin, atau SharpDevelop adalah pengalaman yang tidak menyenangkan.

Tetapi baru-baru ini banyak proyek telah muncul yang membuatnya lebih mudah, misalnya:

OmniSharp , menyediakan fondasi untuk intellisense dan refactoring, bersama dengan vim, emacs, atom, dan plugins yang sublim. Saya belum benar-benar menggunakannya, jadi saya tidak tahu seberapa baik kerjanya, tetapi itu terlihat menjanjikan.

Generator Ye. ASP.NET MVC , membantu mem-bootstrap proyek MVC baru (mungkin ada generator lain).

paket , sebuah alternatif untuk NuGet di mana Anda benar-benar dapat menambahkan paket NuGet ke proyek Anda dari baris perintah, dan memiliki file .csproj Anda diperbarui (walaupun ada alat baris perintah NuGet, sebenarnya memperbarui proyek untuk menggunakan paket adalah bagian dari IDE integrasi, bukan alat baris perintah).

Paket memiliki implikasi bahwa Anda harus mengadaptasi kode sumber Anda untuk menggunakannya - jadi jika Anda duduk sebagai anggota tunggal dalam sebuah tim dan ingin menggunakan editor teks untuk pengkodean, dan semua orang menggunakan Visual Studio, Anda harus meyakinkan semua orang lain untuk menyesuaikan solusi dengan kebutuhan Anda :(

Jadi, Anda harus bisa bangun dan berjalan, tetapi ada lebih banyak pekerjaan yang harus dilakukan untuk membuat rantai alat Anda berjalan dan efisien.


-1

Tidak lagi:

http://www.omnisharp.net/

OmniSharp adalah keluarga proyek Open Source, masing-masing dengan satu tujuan - Untuk memungkinkan pengembangan .NET yang hebat dalam editor pilihan ANDA.

Sangat menyenangkan untuk mengatakan Cross Platform .NET. Tetapi apakah masuk akal bagi seseorang untuk mengembangkan .NET tanpa Visual Studio dan Windows?

Apakah itu menyenangkan untuk melakukan .NET pada Mac di Sublime? Ubuntu dan Emacs? Windows dan Atom? Anda dapat menggunakan editor PLUS untuk bisa menggunakan fitur hebat seperti Intellisense (bukan hanya Pelengkapan Otomatis), Tambah Referensi, Format Dokumen, dan banyak lagi. Kembangkan di mana saja, gunakan di mana saja (dan ke Azure!)

Saya telah menguji ini dengan subime3 dan osx

Lebih banyak sampel di

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


Omnisharp memungkinkan untuk menggunakan C # dengan editor teks, seperti luhur dan emacs. Jadi mengapa downvoted?
mamcx
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.