কোন আদেশে গেটর এবং সেটটারগুলি সংজ্ঞায়িত করতে হবে? [বন্ধ]


14

গ্রাহকগণ এবং সেটটারগুলিকে সংজ্ঞায়িত করার আদেশের জন্য কি সর্বোত্তম অনুশীলন রয়েছে? দুটি অনুশীলন বলে মনে হচ্ছে:

  • গেটর / সেটার জোড়
  • প্রথম জনগণ, তারপরে সেটারগুলি (বা অন্য উপায়ে)

পার্থক্যটি আলোকিত করার জন্য গিটার / সেটার জোড়াগুলির একটি জাভা উদাহরণ:

public class Foo {
    private int var1,
    var2,
    var3;

    public int getVar1() {
    return var1;
    }

    public void setVar1(int var1) {
    this.var1 = var1;
    }

    public int getVar2() {
    return var2;
    }

    public void setVar2(int var2) {
    this.var2 = var2;
    }

    public int getVar3() {
    return var3;
    }

    public void setVar3(int var3) {
    this.var3 = var3;
    }
}

এবং এখানে প্রথমে গেটার্স, তার পরে সেটারগুলির একটি জাভা উদাহরণ রয়েছে:

public class Foo {
    private int var1,
    var2,
    var3;

    public int getVar1() {
    return var1;
    }

    public int getVar2() {
    return var2;
    }

    public int getVar3() {
    return var3;
    }

    public void setVar1(int var1) {
    this.var1 = var1;
    }

    public void setVar2(int var2) {
    this.var2 = var2;
    }

    public void setVar3(int var3) {
    this.var3 = var3;
    }
}

আমি মনে করি যে পরবর্তী ধরণের ক্রমটি কোড এবং শ্রেণি চিত্রগুলিতে উভয়ই স্পষ্ট but তবে অন্য প্রকারের ক্রমকে অর্ডার করার পক্ষে এটি যথেষ্ট কিনা তা আমি জানি না।

উত্তর:


8

প্রথম উপায়। যদি এটি সম্ভব হয় তবে সর্বদা একসাথে গোষ্ঠীবদ্ধ হন বা একই সদস্যদের দ্বারা পরিচালিত সম্পর্কিত ফাংশনগুলি দ্বারা বন্ধ রাখুন।

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

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


একই সদস্যদের ক্রিয়াকলাপ কেন একসাথে রাখা উচিত তার জন্য আপনি আরও যুক্তি যুক্ত করতে চান?
এনএন

কিছু কারণ যুক্ত করা হয়েছে।
বেনেডিক্ট

25

আপনি যদি একটি দলে থাকেন তবে তারা সাধারণত যা করেন তা করুন। অন্যথায় কেবল আপনার আরও বেশি পছন্দ করুন। গুরুত্বপূর্ণ নকশার পছন্দগুলির স্কেলটিতে এটি সম্ভবত কোথাও নিকটবর্তী "স্পেস বারে আঘাত করতে আমার কোন থাম্ব ব্যবহার করা উচিত?"


7
সম্পূর্ণ সম্মত হন। এই এর "ছোট স্টাফ ঘাম না" শিরোনামের, যা সকলের কোডিং মান নিয়ম হওয়া উচিত অধীনে আসে # 0 (এটা হল নিয়ম # 0 "সি ++ কোডিং স্ট্যান্ডার্ড" ঔষধি Sutter ও আন্দ্রে Alexandrescu করে।)
ডেভিড Hammen

আমি নিশ্চিত যে লোকেরা
স্পষ্ট বারটিতে

@ মিশেল আমিও ডান-দিকের umber আমি একচেটিয়াভাবে আমার বাম ব্যবহার করার চেষ্টা করেছি তবে এটি অত্যন্ত কঠিন এবং আমার টাইপটি ক্রলের দিকে ধীর হয়ে গেছে।
axblount

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

6

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


5

আমি যতদূর জানি, কোনও একক সম্মেলন নেই। ফাইল প্রতিষ্ঠানের উপর ওরাকল জাভা কোড কনভেনশন অধ্যায় স্পষ্টভাবে getters এবং setters বসানো উল্লেখ করে না, কিন্তু এটা বলতে না:

এই পদ্ধতিগুলি সুযোগ বা অ্যাক্সেসযোগ্যতার পরিবর্তে কার্যকারিতা দ্বারা গোষ্ঠীযুক্ত করা উচিত।

এটি কোনও দিকনির্দেশনা সরবরাহ করে না - আমি যুক্তি দিতে পারি যে উভয়ই এই মানদণ্ডটি পূরণ করে।

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

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

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

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


1

একক ক্ষেত্রের জন্য গিটার এবং সেটারকে একত্রে, জোড়ায় গোছাও।

সমস্ত উত্সর্গকারীকে এবং সমস্ত সেটটারকে একত্রে একত্রিত করা কোন ফিল্ডগুলিতে সবেমাত্র গেটর বা সাস্টার রয়েছে তা বলা শক্ত করে তোলে।

আমি যখন কোড পড়ছি বা নির্দিষ্ট কার্যকারিতা খুঁজছি তখন আমি ক্ষেত্রের ক্ষেত্র হিসাবে একটি শ্রেণি কল্পনা করি, প্রতিটি ক্ষেত্রের সাথে একজন গেটর এবং সেটার থাকে। ক্লাসের জন্য গিটার গ্রুপ এবং সেটার গ্রুপ, প্রত্যেকটির ক্ষেত্র রয়েছে তা আমার কাছে বোধগম্য নয়।


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

এটি, এবং একটি শ্রেণি কীসের ধারণাগত মডেল। ক্লাসগুলি প্রধানত কার্যকারিতা দ্বারা সংগঠিত করা উচিত। শ্রেণি তৈরি করার সময় আপনি সিদ্ধান্ত নিতে পারেন যে এটির জন্য সর্বজনীনভাবে দৃশ্যমান, পরিবর্তনীয় ক্ষেত্রের প্রয়োজন। এটি ধারণাগত "কার্যকারিতা", গেটর এবং সেটার পদ্ধতির মাধ্যমে সিনট্যাকটিক এক্সপ্রেশন নয়।
এম ডুডলি

0

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


আমি এই সম্পর্কে সচেতন। তবে, উদাহরণস্বরূপ Eclipse এ আপনি বিভিন্ন অর্ডারের মধ্যে চয়ন করতে পারেন
এনএন

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