ওপেন সোর্স শিষ্টাচার


14

আমি কোডেপ্লেক্সে আমার প্রথম ওপেন সোর্স প্রকল্পে কাজ শুরু করেছি এবং কিছু ভয়ঙ্কর কোড পেয়েছি। (আমি শিখলাম যে সি # তে এখনও "গোটো" বিবৃতি রয়েছে) আমি "মালিক" চেয়েছিল এমন বৈশিষ্ট্যগুলি যুক্ত করতে শুরু করেছিলাম এবং কোড বেসটি অন্বেষণ করার পরে এটি কী বিশৃঙ্খলা হয়েছিল তা দেখার পরে (যেমন "গোটো" ব্যবহার করে) আমি এটি পরিষ্কার করতে চেয়েছিলাম একটু. তবে আমি কিছুটা উদ্বিগ্ন এবং সে কারণেই আমি আপনার সকলের দিকে ফিরছি: "খারাপ কোড" "সংশোধন" করা কি আমার পক্ষে উপযুক্ত শিষ্টাচার বা আমার নতুন বৈশিষ্ট্যগুলিতে কাজ করা উচিত? আমি আগে যেমন বলেছিলাম, আমি পুরো ওএসএস দৃশ্যে নতুন এবং সাধারণভাবে একটি দলে কাজ করছি তাই আমি এটিকে গোলযোগ করতে চাই না।


13
gotoঅগোছালো অগত্যা হয় না। অনেকগুলি ক্ষেত্রে রয়েছে যখন এর ব্যবহারটি পুরোপুরি ন্যায়সঙ্গত হয়।
এসকে-লজিক

1
@ এসকে-লজিক - আমার সামনে উত্স না থাকলেও এমন অবস্থা মনে হয়েছিল যেখানে গোটোর পরিবর্তে কোনও পদ্ধতি ব্যবহার করা আরও বোধগম্য হবে (এবং আরও পরিষ্কার হবে)। তবে আমার বিকাশের অভিজ্ঞতা সীমিত তাই আমি ভুল হতে পারি :)
জেটি

2
আপনি কি প্রাথমিক লেখকের সাথে যোগাযোগ করেছেন এবং তাকে জিজ্ঞাসা করেছেন তিনি কী সম্পর্কে চিন্তা করেন?
k3b

@ কে 3 বি - আমি এখনও পাইনি। আমি আজ রাতে অবশ্যই তা করব এবং দেখুন তিনি কী ভাবছেন।
জেটি

উত্তর:


18

এটি করা ঠিক আছে, যদি আপনি এটি সম্পর্কে বিনয়ী হন এবং এটি কোনও কিছু না ভাঙে । আপনি কোডটি পুনরায় ফর্ম্যাট করতে এবং বাগগুলি প্রবর্তন করতে পারেন না। এটির কি ভাল ইউনিট পরীক্ষা আছে? যদি তা না হয় তবে আমি ইউনিট পরীক্ষাগুলি যোগ করে অবদান শুরু করব, এবং পরে কাঠামোটি ঠিক করে ফেলব।


2
আমি রাজী. ইতিমধ্যে কাজের ক্ষেত্রে ঘটে যা কুৎসিত কোডের চেয়ে ভাল ডকুমেন্টেশন এবং পরীক্ষাগুলি আরও মূল্যবান।
ফিলিপ দুপানোভিć

কোন ইউনিট পরীক্ষা। সত্যিই কোন ক্লাস নেই। সমস্ত কোড বর্তমানে ইউআই কোডে রয়েছে। (যেমন বাটন 1_ক্লিক () {// সমস্ত কোড})
জেটি

5
@ জেটি - ইউনিট পরীক্ষা যুক্ত করা এবং তারপরে জিইআইআই কোড-পেছনের কোডটি স্থানান্তরিত করা তখন একটি মূল্যবান অবদান হবে। এর পরে, আপনি আপনার হৃদয়ের সামগ্রীতে রিফ্যাক্টর করতে পারেন।
স্কট হুইটলক

13

মুক্ত উত্সের উদ্দেশ্য হ'ল কোনও প্রকল্পের দিকে আরও নজর রাখা এবং এটির উন্নতি করা। এর মধ্যে কোডটি আরও ভাল করা অন্তর্ভুক্ত। এটি বলেছিল, আপনি যা করতে চান তা তালিকায় বিজ্ঞাপন দেওয়া ভাল ফর্ম। আপনি কিছুটা ধাক্কা ফিরে পেতে পারেন, বা আপনি +1 এর একগুচ্ছ পেতে পারেন। এই gotoবিবৃতিগুলি কেবল সেখানে থাকতে পারে কারণ মূল লেখক কাজটি করার আরও ভাল উপায়ের কথা ভাবতে পারেন নি। আপনি যদি পিছনে ধাক্কা পান তবে চাপটি কোথা থেকে আসছে তা সন্ধানের জন্য একটি ডায়ালগ প্রবেশ করা ভাল। এটিকে ব্যক্তিগত না হওয়ার চেষ্টা করুন এবং উদ্বেগগুলি সমাধান করার চেষ্টা করুন।

নীচের লাইন, ইউনিট পরীক্ষাগুলি ডগমামার চেয়ে জোরে কথা বলে। আপনি যদি প্রমাণ করতে পারেন যে কোডটি এখনকার মতো কিছু ক্ষেত্রে ক্ষতিকারক হবে তবে আপনি হয় থাম্বস আপ পাবেন বা মূল লেখক ভিতরে গিয়ে জিনিসগুলি ঠিক করবেন।

মনে রাখবেন, মুক্ত উত্সে, সম্প্রদায়ের কোডের চেয়ে গুরুত্বপূর্ণ। যদি কোনও সম্প্রদায় না থাকে (ব্যবহারকারী এবং বিকাশকারী উভয়), তবে কোনও প্রকল্প নেই।


1
সম্প্রদায়ের জন্য +1 কোডের চেয়ে গুরুত্বপূর্ণ। এটি পেতে প্রচুর লোক।
ওয়ায়েট বার্নেট

6

লোকেরা যারা তাদের কোড সম্পর্কে alর্ষান্বিতভাবে রক্ষণাত্মক তারা সাধারণত বিশ্বকে যাচাই করার জন্য পোস্ট করে না এবং যদি তারা তা করে তবে এর চারপাশের সম্প্রদায়টি খুব বেশি দিন স্থায়ী হয় না। কৌশলী হন, তবে হতাশ করবেন না যে আপনি অনুভূতিতে আঘাত করবেন hurt

এতে খুব বেশি সময় বিনিয়োগের আগে আপনি কী করতে চান তা কেবল তাদের বলুন। কখনও কখনও এমন জিনিসগুলির জন্য historicalতিহাসিক কারণ রয়েছে যা অ-স্পষ্ট। গোটোস এড়িয়ে যাওয়ার কারণটি হ'ল তারা কোডের মাধ্যমে অপ্রত্যাশিত পাথ তৈরি করতে পারে। তদনুসারে, গোটোস অপসারণের আশঙ্কা হ'ল আপনি কোনও উপকারী পথটি লক্ষ্য করেন না এবং দুর্ঘটনাক্রমে এটিকে চুল্লি থেকে বাদ দেন।

অন্যদিকে, সম্ভবত মূল লেখক কেবল তখনই এটি লেখার কোনও পরিষ্কার উপায়ের কথা ভাবতে পারেন নি। কোডটি শব্দের চেয়ে আরও উচ্চস্বরে কথা বলছে কারণ তারা বিশ্বাস না করতে পারে যতক্ষণ না আপনি এগুলি প্রদর্শন না করেন ততক্ষণ পর্যন্ত এটি পরিষ্কার করা যায়। আমার প্রথম ওপেন সোর্স অবদানের মধ্যে একটি হ'ল একটি পূর্বাবস্থায় স্ট্যাক ফিক্স যা উল্লেখযোগ্যভাবে পারফরম্যান্সকে উন্নত করেছিল, তবে মূল বিকাশকারীদের মধ্যে কেউ কেউ বলেছিলেন যে আমি যখন এটি প্রথম বর্ণনা করেছি তখন খুব জটিল মনে হয়েছিল। একটি সংক্ষিপ্ত কোড নমুনা তাদের বোর্ডে এনেছে।

যদি এটি সক্রিয় হয় তবে এটি ছেড়ে দেওয়ার সত্যিকারের ভাল কারণ রয়েছে তবে আমি কমপক্ষে একটি কারণ হিসাবে ব্যাখ্যা করার জন্য একটি মন্তব্য করব push


6

অভিজ্ঞতা থেকে কথা বলা ...

আমি যে প্রথম ওপেন সোর্স প্রকল্পটিতে অবদান রেখেছি, আমি যখন প্রথম শুরু করেছি তখন আমি সমস্ত প্রস্রাব এবং ভিনেগারে পূর্ণ ছিলাম।

আমি তাত্ক্ষণিকভাবে যা করেছি তা হ'ল উত্স ফাইলগুলির একগুচ্ছ মধ্য দিয়ে যাওয়া এবং আমার ব্যক্তিগত পছন্দগুলিতে জিনিসগুলি স্টাইলাইজ করা শুরু করা, একটি বিশাল প্যাচ তৈরি করা এবং এটি জমা দেওয়া।

আপনি যদি কারও সাথে 'ভাল' (যেমন আমি ছিলেন) (গুলি) কাজ করছেন তবে তিনি তত্ক্ষণাত প্যাচটি প্রত্যাখ্যান করবেন। বেশিরভাগ কারণেই, যখন আপনি কোনও ওপেন সোর্স প্রকল্পে অবদান রাখেন, তখন আপনার প্রত্যাশাগুলি একক ইস্যুকে সম্বোধনকারী কামড়ের আকারের অংশগুলিতে ভেঙে ফেলার আশা করা হয়। 'সমস্ত গোটো সরানো' পারমাণবিক অঙ্গীকারের একটি ভাল উদাহরণ নয়। এমনকি যদি আপনি এটিকে ছোট করে ভাঙেন তবে ভাল-ডকুমেন্টেড প্রথমে কমিট করে এটি এখনও প্রত্যাখাত হতে পারে।

কারণটি হ'ল, কারণ সময়ের সাথে সাথে কোডটি একাধিক লোকের দ্বারা কাজ করা হয়েছিল (বিভিন্ন স্টাইল সহ) কোনও বিকাশকারীর স্টাইল অনুসারে পুরো লাইব্রেরিতে পরিবর্তনগুলি গ্রহণ করা সত্যিই সম্ভব নয়। শৈলীর স্বার্থে যদি স্টাইল পরিবর্তন করা সম্ভব হয় তবে প্রতিটি ওপেন সোর্স প্রকল্পটি কখনই এগিয়ে যায় না কারণ কোডটি নিয়মিতভাবে বিভিন্ন ডিভাস স্টাইলের জন্য সম্পাদনা করা হত।

কোডকে রিফ্যাক্টরিং করা এবং কার্যকারিতা যুক্ত করা (বা অবচিত ক্রাফট অপসারণ) সাধারণত 'পরিষ্কার' কোডের চেয়ে বেশি প্রাধান্য পায়।

ওপেন সোর্স প্রকল্পে কাজ করার সবচেয়ে কঠিন এবং সর্বাধিক ফলপ্রসূ অংশটি, আপনাকে কেন জিজ্ঞাসা করা হবে যে পরিবর্তনগুলি জমা দিচ্ছেন তার প্রস্তাব আপনি দিচ্ছেন করা হবে। আপনি যদি কোনও ভাল কারণ দিতে পারেন তবে আপনার প্যাচ জমা দেওয়ার আরও ভাল সম্ভাবনা রয়েছে।

আমার পরামর্শটি হ'ল আপনি প্রথমে যা করার চেষ্টা করছেন তার স্বাদ দেওয়ার জন্য একটি উত্স ফাইলে এই পরিবর্তনগুলির কয়েকটি করা। যদি পরিবর্তনগুলি যথাযথভাবে গ্রহণযোগ্য হয় এবং স্বীকৃত হয়, তবে আরও পরিবর্তনগুলি যেমন প্রকল্পের মানের উন্নতি করবে কিনা তা জিজ্ঞাসা করুন। যদি ভবিষ্যতে আপনার প্যাচগুলি প্রত্যাখ্যান করা হয় তবে আপনি কোনও কিছুর জন্য প্রচুর প্রচেষ্টা নষ্ট করবেন না।

কোড লেখার চেয়ে ওপেন সোর্স বিকাশ করা বেশি। আপনি একটি বিশ্বাসের সম্পর্ক তৈরির জন্য কাজ করছেন কারণ দারোয়ানরা (ডিভস যারা পুশ অ্যাক্সেস নিয়ন্ত্রণ করে) তা করবে প্রকল্পের অখণ্ডতা রক্ষার জন্য যা হবে তা । আপনি আরও প্যাচ জমা দেওয়ার সাথে সাথে গেটকিপার আপনার স্টাইলের জন্য আরও ভাল অনুভূতি পাবে এবং আপনার পরিবর্তনগুলিকে ততটা ন্যায়সঙ্গত করতে হবে না।

এটি এমন একটি প্রক্রিয়া যা সময় নেয় তবে এটি অত্যন্ত ফলপ্রসূ। আপনি কেবল দেখার জন্য সক্ষম হওয়া এবং কারও এলিসের কোডের সমালোচনা করা থেকে অনেক কিছু শিখবেন না তবে আপনার নিজের স্টাইলে আপনাকে সমালোচনা করা হবে

'অন্যের কোডিং স্টাইলের ত্রুটিগুলির অন্যায়টি সংশোধন করার' চেষ্টা করার আগে আপনি অনেক সময় নষ্ট করার আগে নিজেকে এই জিজ্ঞাসা করুন:

প্রকল্পের মান সংযোজনের ভিত্তিতে আপনি প্রস্তাবিত পরিবর্তনগুলি কি সেগুলি আপনার নিজের অভ্যন্তরীণ শৈলিক ধর্মের ভিত্তিতে।

একটা হল অনেক স্ট্যাক ওভারফ্লো (এবং সংশ্লিষ্ট স্ট্যাক এক্সচেঞ্জ সাইটগুলি) উপর ধর্মের। আমি অনেক মানে । লোকেরা স্টাইল সম্পর্কে অবিরাম চিন্তা করে এবং কথা বলে, আপনি যত বেশি এ সম্পর্কে কথা বলবেন ততই আপনি 'নিখুঁত, আদর্শ, অবর্ণনীয়, অবর্ণনীয়' কোডিং শৈলীর কাছাকাছি আসবেন। আমি এটি সম্পর্কে অনেক বেশি কথা বলি কারণ এটি মজাদার।

ওপেন সোর্স বিশ্বে স্টাইলটি এতটা গুরুত্বপূর্ণ নয়। ফাংশন হয়

দ্রষ্টব্য: এই সমস্ত পরামর্শ অনুমান করে যে আপনার দারোয়ানটি একটি যুক্তিসঙ্গত এবং প্রতিভাবান প্রোগ্রামার। যদি তিনি (গুলি) হন তবে নিজেকে ভাগ্যবান গণ্য করুন যে আপনি যে চমকপ্রদ বি @ & # & এস এর একমাত্র উদ্বেগ তাদের 'বাচ্চা' রক্ষা করছেন তার একটিতে আটকে যাননি। তারা কি বন্য আউট বিদ্যমান, তাই যদি আপনি এক সম্মুখীন না বিস্মিত না।


1

গুণ> শিষ্টাচার

আমার মতে আপনার লোকের কোডটি সম্পাদনা করার বিষয়ে চিন্তা করা উচিত নয় যত তাড়াতাড়ি আপনি এটি আবিষ্কার করেন যে এটির নিম্নমান রয়েছে। একটি ভাল সফ্টওয়্যার মানের অর্জন করার জন্য আপনাকে কেবল পরিষ্কার কোডের যত্ন নিতে হবে। আমি অন্য লোকের কোডে উন্নতি করার ক্ষেত্রে কোন সমস্যা দেখছি না অন্য লোকদের সচেতন এবং কৃতজ্ঞ হওয়া উচিত যে তাদের কোডগুলিতে কাজ করা কোডার রয়েছে।


0

যদি আপনি "গোটো" ব্যবহার না করে সমস্যা সমাধানের আরও ভাল উপায় বের করতে পারেন তবে আমি পরামর্শ দিই এটির জন্য যান। কোডটি আজকে আরও উন্নত করার ক্ষেত্রে কিছুটা প্রচেষ্টা ভবিষ্যতে আপনাকে আরও অনেক প্রচেষ্টা বাঁচাতে পারে।

মূল লেখকের সাথে যোগাযোগ করাও একটি ভাল ধারণা।


0

এর সাথে জড়িত কোনও ভুল নেই goto। সমাবেশ কোড দেখুন - পুরো জায়গা জুড়ে প্রচুর গোটোস (জাম্প এবং শাখা)।

gotoএই দিনগুলিতে একটি খারাপ নাম থাকার কারণটি হ'ল ডিজকস্ট্রা পেপার গো টু স্টেটমেন্টটিকে ক্ষতিকারক বলে মনে করে যা গোটো স্টেটমেন্টটিকে খুব খারাপ বিষয় হিসাবে আকাঙ্ক্ষিত করে।

নোট করুন যে এটি 50 বছর আগে যেখানে সফ্টওয়্যার ইঞ্জিনিয়ারিংয়ের নাম এখনও দেওয়া হয়নি, এবং বেশিরভাগ প্রোগ্রামিং ল্যাঙ্গুয়েজগুলি মূলত অন্তর্নিহিত মেশিনের বিমূর্ততা ছিল তাই মেশিনের ভাষায় গোটো ছিল তাই তারাও করেছিল। সেই মানসিকতাটি কেমন ছিল সে সম্পর্কে ধারণা পেতে আপনি মাইক্রোসফ্ট বেসিক (মূলটি অ্যাপলটিতে] [বা কমোডোর 64৪) এর কিছু প্রোগ্রাম করার চেষ্টা করতে পারেন।

ডিজকસ્ત્રা যে যুক্তি দিচ্ছিলেন তা হ'ল জিনিসগুলি সহজ রাখার জন্য সমস্ত জায়গা জুড়ে ঝাঁপিয়ে পড়ে না, বরং এর পরিবর্তে একটি সাধারণ সমাপ্তির সাথে একটি সহজ প্রোগ্রামের পথ রাখা। যেমন কোনও পদ্ধতি থেকে ফিরে আসা a অন্য কথায় - কেবল স্থানীয় লাফ দেয়, বিশ্বব্যাপী নয়।

এটি ছিল সফটওয়্যার বিকাশের জটিলতা নিয়ন্ত্রণের জন্য আর্গুমেন্ট, কোডের মডুলারাইজেশন, প্যাকেজ ইত্যাদির মতো পদ্ধতি কল আনার দিকে এক ধাপ। গোটো স্টেটমেন্টটি ছিল সেই যুদ্ধের প্রথম বাইস্ট্যান্ডার।


এটি প্রশ্নের উত্তর দেয় না: "" খারাপ কোড "" ঠিক করা "কি আমার জন্য উপযুক্ত শিষ্টাচার বা আমার নতুন বৈশিষ্ট্য নিয়ে কাজ করা উচিত?"

@ স্বামীমান যদি গোটোস থাকার পরে কোডটি অভ্যন্তরীণভাবে এবং স্বয়ংক্রিয়ভাবে খারাপ না হয়, তবে প্রশ্নটি হচ্ছে "আমার কি কোডটি ভাঙা উচিত নয় বা ঠিক করা উচিত নয়"
থরবজর্ন রাভন অ্যান্ডারসন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.