জাভাতে "ভাল স্টাইল" তৈরি করে কী? [বন্ধ]


9

আমি এই প্রশ্নটি স্ট্যাকওভারফ্লোতে জিজ্ঞাসা করেছি এবং এটি উত্সাহিত হওয়ার আগে, আমি পেটার টারিকের সহায়ক পরামর্শ পেয়েছি যে এটি পোস্ট করার জন্য এটি আরও ভাল জায়গা হতে পারে।

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

কিন্তু 'ভাল স্টাইল' কী করে? অনেক কিছুর মতো, আমি এটি যখন দেখি তখন তা আমি জানি ... তবে আমি কেবল আমার বিবেকের চেয়ে আরও ভাল ধারণা পেতে চেয়েছিলাম যে এই নকশাটি সঠিক মনে হচ্ছে না।

ভাল, ভাল ডিজাইনের কোড তৈরি করার জন্য আপনি কী জিনিসগুলি সম্পর্কে ভাবেন?

(আমি স্বীকার করি যে এটি কিছুটা সাবজেক্টিভ, কারণ 'ভাল স্টাইল' কী তা হাতের কাজটির উপর নির্ভর করবে)। (এছাড়াও, আমার যোগ করা উচিত যে আমি দলের শৈলীতে আগ্রহী নই - যেমন "আমরা 4 এর চেয়ে 2 স্পেসের ইনডেন্ট ব্যবহার করি" ... এবং আমি জাভা কোড কনভেনশনগুলিতে আগ্রহী নই।)

সম্পাদনা করুন: এখন পর্যন্ত সমস্ত ভাল উত্তর / মন্তব্যের জন্য ধন্যবাদ। আমি বিশেষত এমন উত্তরের জন্য আগ্রহী যা কোনও প্রোগ্রামারের বিবেকের (এবং সম্ভবত পাকস্থল) রেঞ্চ তৈরি করে এমন জিনিসগুলির কোডিংয়ে সহায়তা করবে?


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

1
@ ব্রায়ান, আপনার কোডটি কীভাবে তা ব্যাখ্যা করুন । কেন তা ব্যাখ্যা করতে আসল মন্তব্যগুলি ছেড়ে দিন । অন্য কথায়, পাগলের মতো মন্তব্য করবেন না (সাধারণ ক্ষেত্রে)

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

1
@ ব্রায়ান: আপনার শেষ বক্তব্যটি সব বলেছে। কোড পাঠযোগ্য হওয়া উচিত। মন্তব্যগুলি বাসি হয়ে যায়। কোড কখনই করে না। যদি আপনি মন্তব্যগুলির প্রয়োজনীয়তা অনুভব করেন, কোডটি এতটা পরিষ্কার না হওয়া পর্যন্ত রিফ্যাক্টর যে মন্তব্যগুলি কোডটি যা বলে তা কেবল পুনরাবৃত্তি করবে। কেবলমাত্র ভাল মন্তব্যটি হ'ল কোডটি কেন একটি নির্দিষ্ট উপায়ে কাজ করে - তৃতীয় পক্ষের লাইব্রেরিতে কোনও বাগ এড়াতে পছন্দ করে - যাতে কেউ ফিরে না যায় এবং এটিকে এমন কোনও কিছুতে পরিবর্তন করেন যা কোনও কারণে কার্যকর হয় না doesn't এটি অবিলম্বে স্পষ্ট হয় না।
রায়ান স্টুয়ার্ট

2
আমি আনুষ্ঠানিকভাবে নম্র হয়েছি। দুঃখিত @amaidment। আমি অনুমান করি যে মন্তব্যগুলির ক্ষেত্রে ভাল কোডিং মানগুলি নিয়ে গবেষণা করা দরকার।
ব্রায়ান

উত্তর:


17

কয়েকটি সংক্ষিপ্ত বিষয়:


3
+1 টি। সম্ভবত সবচেয়ে সমালোচনা: নকল কোডটি ছোট করুন। যদি আপনি কয়েকটি টোকেনের চেয়ে বেশি কেটে কাটাতে প্ররোচিত হন তবে আপনাকে একটি ফাংশনটি বের করতে হবে। এমনকি যদি ফাংশনটি কোডের একক লাইন হয়।
কেভিন ক্লাইনে

4
সদৃশ কোডে, আমি নিম্নলিখিত অবস্থান গ্রহণ করি। কেটে পেস্ট করুন = ঠিক আছে। এটি কেবল চলমান কোড (ধরে নিচ্ছেন আপনি একবারে পেস্ট ব্যবহার করেন)। অনুলিপি করুন এবং পেস্ট করুন = ভয়ঙ্কর। আপনি যদি কেবল আপনার শব্দভাণ্ডার থেকে অনুলিপি বোতামটি সরিয়ে থাকেন তবে আপনি সঠিক কাজটি করার সম্ভাবনা বেশি।
jsternberg

@ জাস্টারবার্গ: কাটা / অনুলিপি পার্থক্যের জন্য +1, তবে আমি লক্ষ্য করেছি যে প্রচুর লোকেরা যখন "কপি / পেস্ট" বোঝায় তখন "কাট / পেস্ট" বলে say আমি জানি না কীভাবে পার্থক্যটি হারিয়ে গেল।
রায়ান স্টুয়ার্ট

5
বারবার এক কথা বলোনা. বারবার এক কথা বলোনা. বারবার এক কথা বলোনা.
Configurator

1
@ কনফিগুয়েটর, আপনি কিছুটা মজার গন্ধ পান ...

9

রায়ান তালিকায় যুক্ত হচ্ছে:

  • সলিড নীতি অনুসরণ করুন
  • আপনার কোডটিতে খুব বেশি চক্র সংক্রান্ত জটিলতা না রয়েছে তা নিশ্চিত করুন
  • টেস্ট চালিত জাভা সর্বদা একটি ভাল জিনিস
  • আপনার যদি কোনও xFactoryFactoryক্লাস থাকে তবে আপনি এটি ভুল করছেন :-)
  • জাভা ইকোসিস্টেমে ওপেন সোর্স লাইব্রেরি দেওয়া, চাকাটি পুনরায় উদ্ভাবন করা খারাপ স্টাইল
  • তারিখ এবং সময় জন্য জোদা সময় ব্যবহার করুন

আমি সেখানে থামব।


2
তবে HammerFactoryFactoryFactoryক্লাসের কী হবে? ;-)
ওয়েইন মোলিনা

@ ওয়াইন, কারখানাগুলি একটি ইঙ্গিত যা কিছু সিদ্ধান্তে বিলম্ব হওয়া দরকার, এবং ফ্যাক্টরিফ্যাক্টরি ফ্যাক্টরিগুলি ইঙ্গিত দেয় যে এমন একটি সিদ্ধান্ত রয়েছে যা রানটাইমে আসলেই নেওয়া দরকার ছিল কিন্তু সম্ভব হয়নি।

আমি জানি, আমি কৌতুকপূর্ণ ছিলাম এবং তখন-জে 2 ইই কেন অত্যধিক জটিল, হামার ফ্যাক্টরি এবং হ্যামার ফ্যাক্টরি ফ্যাক্টরিগুলির সাথে এই নিবন্ধটি উল্লেখ করছি এবং আমি মনে করি হ্যামারফ্যাক্টরিফ্যাক্টরি ফ্যাক্টরিগুলি। :)
ওয়েইন মোলিনা

@ মার্তিজন - সলিড লিঙ্কের জন্য ধন্যবাদ; আমি এর আগে পারিনি। আপনি জোডটাইম ব্যবহার করার পরামর্শ দিয়েছেন; এটি কি জাভা ক্যালেন্ডার / তারিখ শ্রেণিতে কেবল একটি (যথাযথ) বিপর্যয়? জেএসআর 310 (জোদাটাইমের উত্তরসূরী) সম্পর্কে কী?
48

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

1

অন্যের জবাবের প্রশংসা করার সময়, আমি ভাল কোড লেখার চেষ্টা করার সময় আমি যে বিষয়গুলি মনে করি তার কয়েকটি ভাগ করা কেবলমাত্র উপযুক্ত বলে মনে করি:

  • এই শ্রেণি / পদ্ধতি / পরিবর্তনশীল সম্পর্কে কী জানতে হবে? অর্থাৎ এই জ্ঞানটি কোথায় বেঁচে থাকবে?

  • এই কোডটি কীভাবে আমার অ্যাপ্লিকেশনটির স্মৃতি / সম্পাদনাকে প্রভাবিত করতে পারে? (আমি স্বীকার করি যে 'অকালীন অপ্টিমাইজেশন হ'ল সমস্ত মন্দের মূল'; সুতরাং আমি অনুকূলিতকরণের জন্য প্রচুর সময় ব্যয় করার পরামর্শ দিচ্ছি না, বরং আমার কোডটি প্রথমে লেখার সময় একটি চেতনা।

  • এটি কী করে তা (কোড এবং কোড স্ট্রাকচার থেকে) পরিষ্কার? (আমি সর্বোচ্চটি অনুসরণ করার চেষ্টা করি: "লোকেরা বোঝার পক্ষে এটি সম্ভব না করার জন্য প্রচেষ্টা করুন, মানুষের পক্ষে ভুল বোঝার পক্ষে এটি অসম্ভব করে দেওয়ার চেষ্টা করুন") "


1

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

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.