কিছুটা স্পর্শকাতর উত্স থাকলে @ oɔɯǝɹ এর উত্তরে থাকা দস্তাবেজগুলি ভাল।
আপনি ভিসুয়াল স্টুডিও কোড, যা বার্ধক্য PowerShell ISE প্রতিস্থাপন, এবং তারপর ইনস্টল করতে পরিকল্পনা করা হয়েছে ব্যবহার করেন তাহলে বনাম কোড PowerShell এক্সটেনশন , যে বিভিন্ন ফর্ম্যাটিং অপশন যা ছিল অন্তর্ভুক্ত আংশিকভাবে অন্তত উপর ভিত্তি করে অপ্রাতিষ্ঠানিক PowerShell সর্বোত্তম কার্যাভ্যাস এবং শৈলী গাইড । ভিএস কোড এবং পাওয়ারশেল এক্সটেনশন উভয়ই মাইক্রোসফ্ট দ্বারা পরিচালিত হয়, সুতরাং এটি প্রায় সরকারী হিসাবে আনুষ্ঠানিক নির্দেশিকা হতে পারে।
তারা যে কথা বলেছে তাতে আমি একমত নই। উদাহরণস্বরূপ, আমি পিএইচপি, জাভা, সি #, এবং এসকিউএল থেকে এসেছি যেখানে প্রয়োজন না হলে সেমিকোলনগুলি আশা করা হয়। কোডগুলি এগুলি ছাড়া আমার কাছে ভুল দেখায় , তাই আমি তাদের অন্তর্ভুক্ত করি। যদি #requires SemicolonTerminator
আমি থাকত তবে আমি আমার বেশিরভাগ স্ক্রিপ্টগুলিতে এটি সক্ষম করে ফেলতাম তাই আমাকে কোনও লাইন ভাঙার হোয়াইটস্পেস সম্পর্কে চিন্তা করতে হবে না। আমি গাড়িবহর রিটার্ন এবং অন্যান্য ভিবি-ইসেমগুলিকে পালাতে পছন্দ করি না।
এগুলির মধ্যে আমার মতামত:
আসল সেমিডলেট নাম বা উপনামটি ব্যবহার করবেন?
দ্ব্যর্থহীন হন। কোনও সংরক্ষিত স্ক্রিপ্টে কখনই কোনও নাম ব্যবহার করবেন না; এমনকি একটি ডিফল্ট নাম। কোনও ব্যবহারকারীর ডিফল্ট এলিয়াস পরিবর্তন থেকে বিরত থাকার কিছুই নেই। ধারণা করা নিরাপদ যে তারা পরিবর্তনযোগ্য নয়।
সেমিডলেট পরামিতিটির নাম পুরো বা কেবলমাত্র আংশিকভাবে নির্দিষ্ট করুন (দির-রেকর্ড বনাম দির-আর)
আবার, দ্ব্যর্থহীন হন। পূর্ণ পরামিতি নামগুলির মধ্যে সেরা ফরোয়ার্ড সামঞ্জস্য রয়েছে। -r
আজকে দ্ব্যর্থহীন হতে পারে তবে নতুন পরামিতিগুলি প্রবর্তন করে কোনও কমান্ডের ভবিষ্যতের সংস্করণগুলি থামিয়ে দেওয়ার কিছুই নেই। আপনি কোনও আইডিই (আইএসই বা ভিএস কোড) ব্যবহার করছেন। হিট Ctrl+ Spaceএবং সেই প্যারামিটারটি স্বয়ংক্রিয়ভাবে পূর্ণ করুন।
মনে রাখবেন যে, ls -r
হয় দ্ব্যর্থক। -ReadOnly
এর আরেকটি প্যারামিটার Get-ChildItem
।
সেমিডলেটগুলির জন্য স্ট্রিং আর্গুমেন্টগুলি নির্দিষ্ট করার সময় আপনি এগুলি উদ্ধৃতিতে আবদ্ধ করবেন (নিউ-অবজেক্ট 'সিস্টেম.আইটি 32' বনাম নিউ-অবজেক্ট সিস্টেম I ইন্ট 32
সাধারণভাবে, যখন প্রয়োজন হবে তখনই উদ্ধৃতিগুলি ব্যবহার করা উচিত (যেমন, New-Object -TypeName 'System.Collections.Generic.HashSet[System.Int32]'
আপনি যখন পারেন তখন একক উদ্ধৃতি ব্যবহার করুন এবং যখন আপনাকে একক উদ্ধৃতি আবদ্ধ করতে হবে বা ভেরিয়েবল এম্বেড করার প্রয়োজন হবে তখন কেবল ডাবল উদ্ধৃতিগুলি ব্যবহার করুন)।
ফাংশন এবং ফিল্টার লেখার সময় আপনি কি পরামিতির প্রকারগুলি নির্দিষ্ট করেন?
আমি সাধারণত তা করি, যদি না বিশেষত একই প্যারামিটারের সাথে বিভিন্ন ধরণের বিভিন্ন ধরণের গ্রহণ করার প্রয়োজন হয় এবং পৃথক প্যারামিটার সেট লিখতে না চাই।
আপনি (অফিসিয়াল) সঠিক ক্ষেত্রে সেমিডলেট লিখছেন?
পাস্কেল কেস। হ্যাঁ.
বিগইন ... প্রসেস ... শেষের মতো কীওয়ার্ডগুলির জন্য আপনি কি কেবল সেগুলি বড়হাতে লিখবেন?
আমি বিবৃতি, অপারেটর, এবং ভাষা নির্মান দেখা করেছি Begin
, If
, ForEach
, -NotIn
সেইসাথে begin
, if
, foreach
, -notin
। ব্যক্তিগতভাবে, আমি লোয়ার কেস পছন্দ করি এবং কমান্ডগুলি পাস্কাল কেস হিসাবে ছেড়ে দিই, তবে তারা উভয়ই সমান সাধারণ।
অন্যান্য:
সর্বদা পরামিতি নির্দিষ্ট করুন। অবস্থানগত আদেশ উপর নির্ভর করবেন না। New-Object -TypeName System.Int32
ওভার New-Object System.Int32
। আমি জানি না যে তাতে একমত হয়েছে কিনা, তবে, আবার এটি "দ্ব্যর্থহীন হয়ে উঠুন" এর সাধারণ ধারণাকে সমর্থন করে বলে মনে হচ্ছে।
যদি আমি একটি মডিউল লিখছি, আমি নির্দেশিত মান ক্রিয়াগুলি ব্যবহার করি Get-Verb
। এই তালিকাটি অত্যন্ত সংকীর্ণ, তবে স্ক্রিপ্টগুলির জন্য একা একা থাকা স্ক্রিপ্টের নামগুলি যা কেবলমাত্র আমি নিজেই চালাব প্রায়শই না don't জেনেরিক ক্রিয়া তালিকার সমস্যাটি এটির দিকে ঝুঁকছে Get-ScriptForSpecificPurposeNoNotThatOneTheOtherOne.ps1
। যদি আমি কোনও স্ক্রিপ্ট লিখছি যা কোনও পিডিএফ ফাইল থেকে নির্দিষ্ট পৃষ্ঠাগুলি বের করে, আমি এটি কল করছি না Get-ExtractedAccountPDFPages.ps1
। আমি ফোন করছি Extract-AccountPDFPages.ps1
। আমি কোনও স্ক্রিপ্টের আবিষ্কারের বিষয়ে উদ্বিগ্ন নই যা নিজেই একটি প্রোগ্রাম হিসাবে চলে এবং এটি খুব প্রকৃতির দ্বারা মডুলার হওয়ার উদ্দেশ্যে নয়।
আরও পাঠযোগ্য, আরও কংক্রিটযুক্ত, বা আরও রক্ষণাবেক্ষণযোগ্য হলে নিয়মগুলি ভঙ্গ করুন।