জাভা পদ্ধতিতে অর্ডারিংয়ের কোনও পদ্ধতি আছে? [বন্ধ]


159

আমি একটি বৃহত-ইশ শ্রেণি পেয়েছি (40 বা ততোধিক পদ্ধতি) যা আমি প্যাকেজের অংশ যা কোর্স-কাজ হিসাবে জমা দেব। বর্তমানে, পদ্ধতিগুলি সরকারী / বেসরকারী ইত্যাদি উপযোগের ক্ষেত্রে বেশ বিড়বিড় করছে এবং আমি সেগুলি বুদ্ধিমান উপায়ে অর্ডার করতে চাই। এটি করার কোনও মানক উপায় আছে? উদাহরণস্বরূপ ক্ষেত্রগুলি সাধারণত পদ্ধতির আগে তালিকাভুক্ত হয়, কনস্ট্রাক্টর (গুলি) অন্যান্য পদ্ধতির আগে তালিকাভুক্ত হয় এবং গেটার / সেটার্স শেষ হয়; বাকি পদ্ধতি সম্পর্কে কি?


এছাড়াও নোট করুন যে এই জাতীয় কোড সহ কাজ করার সময় , বেশিরভাগ IDE আপনাকে স্বয়ংক্রিয়ভাবে কার্সারের নীচে যা আছে তার সংজ্ঞা দেখতে দেয়। এর অর্থ আপনাকে এক নজরে দেখার দরকার নেই।
থরবজর্ন রাভন অ্যান্ডারসন

যদি আপনার একক শ্রেণিতে 40 টি পদ্ধতি থাকে - আপনি এটি ভুল করছেন
বেন

উত্তর:


132

কিছু সম্মেলন প্রথমে সমস্ত পাবলিক পদ্ধতি তালিকাভুক্ত করে এবং তারপরে সমস্ত প্রাইভেটগুলি - এর অর্থ এই যে কোনও ইন্টারফেস জড়িত না হওয়া সত্ত্বেও, API টি বাস্তবায়ন থেকে পৃথক করা সহজ, আপনি কী বোঝাতে চাইছেন তা যদি বোঝা যায়।

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


1
+1 টি। আমি দৃশ্যমানতার দ্বারা বাছাই করতে পছন্দ করি।
লজ্জাগ্রহণটি

16
@ ফিঞ্জ, একটি বাগ রিপোর্ট দাখিল করুন। অপরিচিত জিনিসগুলি সেখান থেকে বাস্তবায়িত হবে বলে জানা গেছে।
থরবজর্ন রাভন অ্যান্ডারসন

3
@ বেন: আমার অভিজ্ঞতা হ'ল যে কোনও "কখনই" ব্যতিক্রম হবে না।
জন স্কিটি

1
উদাহরণস্বরূপ কয়েকটি ক্ষেত্রে @ জোনস্কিট, যেখানে কনভেনশনগুলি অর্ডার করার পক্ষে আর প্রাসঙ্গিক নয় test খারাপ কোডটি কীভাবে সাজানো যায় তার চেয়ে খারাপ কোড না লিখাই ভাল better
বেন

1
@ বেন: আমি মনে করি আমাদের সাথে একমত হতে হবে না। আমি কোড লিখেছি যেখানে খুব স্বাভাবিকভাবেই অনেক সদস্য রয়েছে, উদ্বেগের কোনও বিভাজন ইত্যাদি লঙ্ঘন না করে
জোন স্কিট

121
  1. ক্লাস (স্ট্যাটিক) ভেরিয়েবল: প্রথমে পাবলিক ক্লাস ভেরিয়েবল, তারপরে সুরক্ষিত এবং তারপরে প্রাইভেট।

  2. ইনস্ট্যান্স ভেরিয়েবলগুলি: প্রথমে সর্বজনীন, তারপরে সুরক্ষিত এবং তারপরে ব্যক্তিগত।

  3. কন্সট্রাকটর

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

সূত্র: http://www.oracle.com/technetwork/java/codeconventions 141855.html


4
এটি 15 বছরের পুরনো এবং সম্ভবত আধুনিক আইডিইগুলির উপস্থিতির সাথে কিছুটা পুরানো ...
অ্যাসলিয়াস

16
@ এ্যাসেলিয়াস: আইএমও, পাঠযোগ্যতা আইডিইর থেকে পৃথক। প্রাইভেটের আগে সর্বজনীন রাখা সাধারণত ভাল।
সৌরভাইট

40

8
+1, আফাইক - এটি কেবলমাত্র পোস্ট যা আসলে প্রশ্নের উত্তর দেয়। হ্যাঁ ওরাকল এবং সূর্যের দ্বারা নির্ধারিত একটি মানক আদেশ রয়েছে: ১. জনসাধারণের মন্তব্য, ২. শ্রেণি, ৩. অভ্যন্তরীণ মন্তব্য, ৪. স্ট্যাটিক ডেটা, instance. উদাহরণ তথ্য, 6.. সিটি, methods. পদ্ধতি এবং প্রতিটি বিভাগের মধ্যে যৌক্তিকভাবে, অ্যাক্সেসযোগ্যতার দ্বারা নয়।
জন হেন্কেল

@ ভাদিমকিরিলচুক «ইন্টারনেট সংরক্ষণাগার down নিচে ছিল ...
টিমোফয়ে গর্শকভ


15

সর্বজনস্বীকৃত মান আছে কিনা তা নিশ্চিত নন তবে আমার নিজস্ব পছন্দগুলি;

  • প্রথমে কনস্ট্রাক্টর
  • স্থিতিশীল পদ্ধতিগুলি, যদি কোনও মূল পদ্ধতি থাকে তবে সর্বদা অন্যান্য স্থির পদ্ধতির আগে
  • অ স্থির পদ্ধতিগুলি পরবর্তী, সাধারণত পদ্ধতিটির তাত্পর্য অনুসারে যে কোনও পদ্ধতিতে এটি কল করে। এর অর্থ হল যে অন্যান্য সরকারী পদ্ধতিগুলিকে কল করে এমন সরকারী পদ্ধতিগুলি শীর্ষ এবং ব্যক্তিগত পদ্ধতির দিকে প্রদর্শিত হয় যা অন্য কোনও পদ্ধতিকে কল করে না সাধারণত সাধারণত নীচের দিকে থাকে
  • মান পদ্ধতি পছন্দ toString, equalsএবং hashcodeপরবর্তী
  • গ্রেটার এবং সেটটারদের ক্লাসের নীচে ডানদিকে একটি বিশেষ জায়গা সংরক্ষিত থাকে

আমি সত্যিই শেষ নির্মাতাদের পছন্দ করি কারণ সঠিকভাবে লিখিত কনস্ট্রাক্টরের বৈশিষ্ট্যগুলিতে তার যুক্তিগুলি নির্ধারণের চেয়ে খুব কম কিছু করা উচিত।
গর্ডনএম

@ গর্ডনএম আপনি কেন এমন ভাবেন? বিপরীতটি সত্য বলে আমি ততদূর যেতে চাই go আপনার ক্লাসের জন্য সর্বদা পরিষ্কার API এর কথা ভাবা উচিত। এবং এগুলি প্রায়শই সেইভাবে সংরক্ষণ করা হয় না, তাই আমি প্রায়ই
ফোনটিকে

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

@ লোনলিউউরন আপনি এখানে কী বলছেন তা পুরোপুরি নিশ্চিত নন তবে আপনি দেখতে পাচ্ছেন যে কনস্ট্রাক্টরের অভ্যন্তরীণ অবস্থার সাথে তার যুক্তিগুলি নির্ধারণের বাইরে অনেকগুলি সেটআপ কাজ করা উচিত। এটি অবশ্যই স্পষ্টতই ভুল, কারণ এর অর্থ হল "যাদু" দ্বারা জিনিসগুলি ঘটছে। একটি কল করার new Thing()ফলে কেবলমাত্র একটি নতুন জিনিস ইনস্ট্যান্ট করা উচিত।
এটিতে

@ লোনলি নিউরন কোনও কনস্ট্রাক্টরের উপর নির্ভরশীলতা থাকা ক্লাসের বাস্তবায়ন সম্পর্কে নির্ভর করে না তার নির্ভরতাগুলি সম্পর্কে আপনাকে কিছু বলবে না। এটি একটি ভাল জিনিস, খারাপ জিনিস নয়।
গর্ডনএম

12

একক ক্লাসে 40 টি পদ্ধতি অনেক বেশি।

কিছু কার্যকারিতা অন্য - উপযুক্ত নামযুক্ত - শ্রেণিতে স্থানান্তরিত করার অর্থ কী? তারপরে এটি বোঝা আরও সহজ।

আপনার কম থাকলে, প্রাকৃতিক পড়ার ক্রমে এগুলি তালিকাভুক্ত করা আরও সহজ। একটি ঘন ঘন দৃষ্টান্ত হ'ল জিনিসগুলির প্রয়োজনের আগে বা পরে আপনার প্রয়োজনীয় ক্রম অনুযায়ী তালিকা তৈরি করা।

এর অর্থ সাধারণত যে main()উপরে বা নীচে যায়।


1
Youre তাই ডান - এই একটি ক্রম সমস্যা হয় না
kostja

4
আপনার সবসময় কোনও পছন্দ থাকে না, উদাহরণস্বরূপ যদি আপনি প্রচুর পদ্ধতিতে ইন্টারফেস প্রয়োগ করেন।
ফিনিউ

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

@ প্রথম, বিমূর্ত ক্লাসগুলি এই উদ্দেশ্যে সুন্দর এবং ব্যবহারযোগ্য us
থরবজর্ন রাভন অ্যান্ডারসন

11

আমার "কনভেনশন": উদাহরণস্বরূপ স্থিতিশীল, বেসরকারীের আগে প্রকাশ্য, পদ্ধতির আগে নির্মাতা, তবে নীচে মূল পদ্ধতি (উপস্থিত থাকলে)।


2

এছাড়াও, যদি কোনও কারণে আপনি তাদের সাথে মিশ্রিত হন তবে গ্রহন আপনার জন্য শ্রেণীর সদস্যদের বাছাই করার সম্ভাবনা সরবরাহ করে:

আপনার ক্লাস ফাইলটি খুলুন, প্রধান মেনুতে "উত্স" এ যান এবং "সদস্যদের বাছাই করুন" নির্বাচন করুন।

এখান থেকে নেওয়া হয়েছে: গ্রহনটিতে বাছাই করার পদ্ধতি


1

আপনি কি গ্রহণ করছেন? যদি তাই হয় তবে আমি ডিফল্ট সদস্য সাজানোর ক্রমটি ধরে রাখব, কারণ আপনার কোডটি যে পড়েন তার পক্ষে এটি সম্ভবত সবচেয়ে বেশি পরিচিত (যদিও এটি আমার প্রিয় সাজানোর ক্রম নয়))

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