প্রত্যাবর্তিত ভেরিয়েবলের "ফলাফল" নামকরণ করা কি ভাল অভ্যাস? [বন্ধ]


44

ভেরিয়েবলটিকে কোনও পদ্ধতিতে ভেরিয়েবল নামের সাথে ফেরত বলা ভাল অভ্যাস result?

এই ক্ষেত্রে:

public Zorglub calculate() {
    Zorglub result = [...]
    [...]
    return result;
}

অথবা আমি কি এর ধরণ অনুসারে নামকরণ করব?

public Zorglub calculate() {
    Zorglub zorglub = [...]
    [...]
    return zorglub;
}

আমি বন্য উভয়কেই দেখেছি, যদি আমার কোনওটি বেছে নিতে হয় তবে কোন কারণে আমাকে প্রাক্তন বা উত্তর (বা আরও ভাল নাম) পছন্দ করতে পারে?

আমি প্রধানত জাভা সম্পর্কে চিন্তা করছি।


73
আমি ofTheJediসেই উদ্দেশ্যে ব্যবহৃতও দেখেছি । কোনও প্রস্তাবনা নয়, কেবল বলেছি এটি আমি দেখেছি। Zorglub ofTheJedi = //...; return ofTheJedi;

7
আমি এটিকে সাধারণত "রেটভ্যাল" (ফেরত দেওয়ার মান) বলে থাকি তবে এটি "ফলাফল" হিসাবে কমবেশি একই জিনিস, যা আমি আমার ভোটটি রেখে দেব।
জিটা দুই

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

16
আমি বলব যে ভেরিয়েবল হিসাবে "ফলাফল" ঠিক আছে, তবে একটি কার্য হিসাবে "গণনা" একেবারেই নয় not
কাজ ড্রাগন

2
আপনি কি প্রাক্তন ডেলফি প্রোগ্রামারদের সাথে কাজ করেন?
পিটার টার্নার

উত্তর:


48

এটি যদি কোনও পদ্ধতি পরিবর্তনশীল হয় তবে এটি সত্যই পঠনযোগ্যতার উপর নির্ভর করে।

ভেরিয়েবলের ঘোষণা এবং পদ্ধতি রিটার্ন টাইপ উভয়টিতে ইতিমধ্যে আপনার নাম রয়েছে বলে আপনি সম্ভবত resultএটি ব্যবহার করতে পারেন - এটি ভেরিয়েবলের ভূমিকার বর্ণনামূলক।


40

ভেরিয়েবলটির নাম দেওয়া হলে ক্রস রিডিং সহজ করা হয় result। এটি আপনার উদ্দেশ্য পরিষ্কার করে তোলে।


2
+1 এটিই মূল বিষয়। আমি জানি কোডের দিকে ঝলক দিয়ে কোনও প্রসঙ্গে ফলাফলের অর্থ কী।
জিওনক্রস

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

17

আমার যদি কোনও রিটার্ন ভেরিয়েবলের প্রয়োজন হয় (যা আসলে খুব কমই ঘটে), আমি সর্বদা এটি কল করি retএবং সর্বদা এটি ফাংশনের মাথার ঠিক নীচে সংজ্ঞায়িত করি। ফাংশনটির ইতিমধ্যে একটি নাম রয়েছে যা এটি কী ফিরে আসে সে সম্পর্কে সমস্ত কিছু বলে।

যদি আমি আছে myFunctionআমি পারে এটা ফিরে পরিবর্তনশীল নাম myFunctionReturnValueঠিক একই জিনিস বলতে চাই, শুধু আমি এটা স্পষ্টভাবে প্রতি একক সময় বলার আছে চাই। যেহেতু ফাংশনগুলি সাধারণত সংক্ষিপ্ত হওয়া উচিত, তাই এই ধরনের স্পষ্টত সাক্ষীর প্রয়োজন নেই। এমনকি যদি আমি ট্র্যাকটি হারাতে পারি, তবে আমি ঘোষণায় ঝাঁপ দিতে পারি এবং ফাংশন সংজ্ঞার ঠিক নীচে নেমে যাব।

কিন্তু অন্য কোন নাম, যে (যেমন পরোক্ষভাবে করে retবা resultঅথবা (মত) স্পষ্টভাবে myFunctionReturnValueবা myFunctionResultঅঙ্গরাজ্য), যে এই বর্তমান ফাংশন হয় আসতে পরিবর্তনশীল খুব জেনেরিক হয়।

আপনার দ্বিতীয় উদাহরণে zorglubএকটি ভয়ঙ্কর পছন্দ। সমস্ত ঘোষণা আমাকে সত্যই বলেছে যে আপনি একটি ভেরিয়েবল তৈরি করেছেন, যার নাম নামের ঠিক পাশের ধরণের টীকাযুক্ত সমান। এটা তোলে হিসাবে সহায়ক হিসাবে সম্বন্ধে int someIntবা Zorglub z

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

আপনি স্পার্টান প্রোগ্রামিং পড়তে চাইতে পারেন , যা আপনার প্রশ্নের সাথে সম্পর্কিত।


8
"জর্লগ একটি ভয়ঙ্কর পছন্দ" এর জন্য +1। কোনও পরিবর্তনশীল নাম থাকার কোনও পার্থিব কারণ নেই, যে কোনও প্রসঙ্গে, এটি টাইপের নামের সাথে মিল (প্রাথমিক রাজধানী বিয়োগ)। ঘোষণাপত্রটি আপনাকে ভেরিয়েবলের প্রকারটি বলে - আপনার প্রকারের পরে আপনার ভেরিয়েবলের নামকরণ করা আপনার ভেরিয়েবলগুলিকে x1, x2, x3 ইত্যাদি কল করার চেয়ে ভাল নয়। যে কোনও ভেরিয়েবলের নামটি ভেরিয়েবলের জন্য বা এটি কী করে তা প্রকাশ করা উচিত। এই নির্দিষ্ট ক্ষেত্রে একটি ভেরিয়েবলের জন্য আমার পছন্দসই নামটি হ'ল রিটারন - কারণ ভেরিয়েবলটি প্রত্যাবর্তন করতে বস্তুর উল্লেখ করে। আসলে, আমার প্রচুর ভেরিয়েবলের নাম "টু" দিয়ে শুরু হয়।
দাউদ বলেছেন মনিকা

21
@ ডেভিডওয়ালেস - এটি পরম একটি শক্তিশালী strong আমার একটা ক্লাস আছে Container। যদি আমার কাছে এমন কোনও পরিমাণ থাকে যা পরিমাণটি সংশোধন করে তবে আমি বলতে পারি var container = getContainer(id); container.Quantity += 1; এটি অবশ্যই পঠনযোগ্য যদি পদ্ধতির প্রসঙ্গটি কেবলমাত্র একটি একক ধারকতে কাজ করে এবং কেবল এটিই ঘটে। এটাকে theContainerWeAreGoingToAdjustTheQuantityOfবলা শুধু হাস্যকর।
স্কট হুইটলক

4
@ ডেভিড, আমি একমত নই আসুন এমন একটি পরিস্থিতি নেওয়া যাক যেখানে আপনার বেশ কয়েকটি স্থানীয় ভেরিয়েবল রয়েছে, প্রতিটি পৃথক প্রকারের (যাক ব্যবহারকারী, পরিচালক এবং বিভাগ বলুন)। এবং ধরুন টাস্কটি ব্যবহারকারীকে ডিপার্টমেন্ট এবং ম্যানেজারের দলের সাথে সংযুক্ত করা। এই ব্যবহারকারী উদাহরণটি সহজভাবে কল করা ঠিক কী ঠিক আছে user(এর বিপরীতে userToJoinThisDepartmentAndManager? বা আপনার পছন্দটি কী হবে?)
পিটার টারিক

10
গৌণ নিটপিক: "ret" বা "আরভি" বা ফলাফল / রিটার্নভ্যালুর অন্যান্য সংক্ষিপ্ত রূপগুলি দেখে আমি ঘৃণা করি। "ফলাফল" খুব দীর্ঘ নয় এবং কারও অক্ষর সংরক্ষণ করার প্রয়োজন নেই।
ক্রিস্টোফার জনসন

2
@ ক্রিস্টোফার জনসন: "ফলাফল" খুব দীর্ঘ নয়, তবে এর অর্থ "রিটার্ন মান "ও নয়। রিটার্ন-মানগুলি সর্বদা গণনার ফলাফল হয় না এবং বিপরীতে, গণনার ফলাফলগুলি সর্বদা ফিরে-মান হয় না। আমি মনে করি আপনি নিজের রিটার্ন-মানটির নাম রাখতে পারলেন returnValue, তবে retগতানুগতিক, ঠিক যেমন intএবং তেমন char
রুখ

12

আপনার দ্বিতীয় উদাহরণে, আপনি conflating করছি টাইপ সঙ্গে ফলাফলের কি এটা

Zorglub zorglub;

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

double variance;

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


8

আপনি অনেক Zorglub আপনার পদ্ধতি বস্তু সঙ্গে খেলা থাকে, তাহলে আপনি ভুল করা "পারে" ও ভুল এক ফিরে, অথবা / এবং আপনি অন্যদের নাম প্রলুব্ধ করা যায়নি zorglub1, zorglub2ইত্যাদি

আপনি যদি নামটি দিয়ে থাকেন তবে আপনার resultমতো ভুল করার কোনও সুযোগ নেই। এছাড়াও, আমি দেখতে পাচ্ছি যে এটি একটি ভাল নাম; আমি দেখেছি returnedValueবা returnedObjectবেশ কয়েকবার, এটি বেশ লম্বা হলেও এটিও পরিষ্কার।


5

আমি resultভেরিয়েবল নাম হিসাবে ব্যক্তিগতভাবে পুরোপুরি স্বাচ্ছন্দ্য বোধ করি না । যথেষ্ট উপযুক্ত, এটি আমাকে বলে যে সম্পর্কিত মানটি কয়েকটি গণনার ফলাফল - তবে আমি অনুমান করি যে কোনও প্রোগ্রামে ব্যবহৃত ভেরিয়েবল / ফিল্ডগুলির 90% (বা তার বেশি) এর ক্ষেত্রে এটি সত্য।

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

সুতরাং আমি আমার পদ্ধতিগুলি সংক্ষিপ্ত এবং পরিষ্কার রাখতে পছন্দ করি, এবং ঘের পদ্ধতির অভ্যন্তরীণ পদ্ধতির স্থানীয় ভূমিকা না রেখে তারা যে মূল্য রাখে তার অর্থের অর্থ প্রকাশ করতে আমার ভেরিয়েবলগুলির নাম রাখি । তবে, (যেমন লিগ্যাসি কোডে) এর Zorglub resultচেয়ে অবশ্যই বুঝতে সহজ হতে পারে Zorglub zorglub


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

@ সুপ্রঃ: অন্য কয়েকটি গণনার ফলাফল বর্ণনা করতে আপনি কোন নামটি ব্যবহার করবেন, যা কেবলমাত্র পরবর্তী বিবৃতিতে বা দুটিতে ব্যবহৃত হবে (উদাহরণস্বরূপ if (result >= 0) numChars+=result; else break;, এবং যার অর্থ প্রশ্নে গণনা থেকে সুস্পষ্ট হবে?) আমার মনে, মানটি যে হবে থেকে ফেরত পাঠানো এই বলা উচিত ফাংশন ret, যখন মান ছিল গত নামক ফাংশন থেকে ফেরত হওয়া উচিত result। নোট করুন যে resultফাংশনের রিটার্ন মান যেমন একটি পরিমাণ বা ত্রুটি কোড উপস্থাপন করতে পারে যদি একটি দীর্ঘ নামের চেয়ে আরও অর্থবহ হতে পারে।
সুপারক্যাট

@ সুপের্যাট, আমি গণনাটি কী ছিল, বা মানটি কী ব্যবহারের উদ্দেশ্যে তৈরি করা হয়েছে তার ভিত্তিতে আমি এটির নাম দেব। এমনকি যদি এটি কেবল তার পরবর্তী গণনায় ব্যবহৃত হয় তবে এটির নামটি ভালভাবে নামকরণ করা থাকলেও এটি পঠনযোগ্যতায় সহায়তা করে। আপনার উদাহরণে আমার কোনও ধারণা নেই যে এর অর্থ resultকী বা কোডটি আসলে উচ্চতর স্তরে কী করে। এটির মানটি কোথা থেকে এসেছে এবং এটি কী তা নির্ধারণ করার জন্য আমাকে এটি নির্ধারণ করতে হবে। এর মতো addedCharsবা matchedCharsআরও স্বচ্ছ হতে পারে এবং কোডটি কী করছে তা প্রকাশ করতে সহায়তা করে এবং মানসিকভাবে এটি এবং সম্পর্কিত সম্পর্কিত জাগ্রত করার দরকার নেই result = ...:)
সুপ্রি

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

@ সুপের্যাট, retপরিবর্তে ব্যবহার resultকরা আমার পক্ষে ভাল মনে হয়েছে। এটি আমার মতে কিছুটা কম স্পষ্ট কারণ এটি সংক্ষিপ্ত এবং বিশেষ্য জাতীয় নয়, তবে যদি এটি ধারাবাহিকভাবে ব্যবহৃত হয় তবে এটি সমান result
Supr

1

resultফাংশন / পদ্ধতি থেকে ফিরে আসা মানটির জন্য আমি ব্যক্তিগতভাবে নামটি ব্যবহার করি । এটি সুস্পষ্ট করে তোলে যে এটি ফেরত দেওয়ার মান। এটিকে নাম অনুসারে নামকরণ কার্যকর মনে হয় না, কারণ একই ধরণের একাধিক ভেরিয়েবল থাকতে পারে।


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

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

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

1

পার্থক্য কি? সেখানে এটির মাত্র 2 টি ভিন্ন শব্দ যা একই কাজ করবে তাই আসল সমস্যাটি কোনটি আপনার কাছে আরও স্পষ্ট মনে হচ্ছে?

"ফলাফল" বা "জোরগ্লাব"।

ZorglubResultআপনি দেখতে পাচ্ছেন এমন অন্যান্য ফলাফলের সাথে তুলনা করা সহজ এবং তার ফলাফলের তুলনায় আপনি সহজেই ফলাফলটি দেখতে দেখতে স্টার্টারের জন্য ব্যবহার করতে পছন্দ করব Zorglub..


1

আমি কি এর ধরণের নাম দিয়েছি?

কখনো না. একে সিস্টেম হাঙ্গেরিয়ান বলা হয় এবং কোনও প্রোগ্রাম ব্যবহারের ধারণা দ্বারা তুচ্ছভাবে পুরানো হয় যা আপনার প্রয়োজনের সময় যে কোনও ভেরিয়েবলের ধরণ প্রদর্শন করতে পারে।


1

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

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

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


0

আমি তাদের একত্রিত করতে পছন্দ করি, এটি কী তা দেখায় এবং এটি প্রত্যাবর্তনের উদ্দেশ্যে।

সুতরাং আপনার উদাহরণে এটি ফলাফল zllub হবে

যদি এটি যা হয় তবে তা কেবল ফলাফলের চেয়ে সত্য হয় না (রেজাল্ট স্ট্রিং নয়)


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

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

@ ডোনালফেলো আমি আপনার সাথে সম্পূর্ণ সম্মত উত্স সংগ্রহস্থল থেকে আপডেট করার সময় আপনি যত কম পরিবর্তন দেখতে পাবেন তত ভাল।
জালান

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

0

আমি কোনও সময়ে কোনও রিটার্ন মান নির্ধারণ এবং তারপরে সংশোধন করতে পারে এমন সমস্ত কোড থেকে returnসরে যাওয়ার জন্য শর্তসাপেক্ষ ব্যবহার করে এবং এখনই আইএনএসের মধ্যে খুব একটা পার্থক্য দেখতে পাচ্ছি না , তাই আমি প্রত্যক্ষ ফেরতের জন্য যাচ্ছি, সুতরাং কোনও resultপরিবর্তনশীল নেই is

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


0

আমি যখন সি ++ এ কাজ করছিলাম এবং আমার ধারণা এটি জাভাতে প্রয়োগ হতে পারে।

যেমন

int Width() const
{
    Requires(....);
    Requires(....);

    //calculation

    Ensures(...);
    Ensures(...);
    return Result;
}

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


0

পুনরাবৃত্তির ক্রিয়ায়, ফলাফলটি ধাপে ধাপে ধাপে বহন করা, একটি লেজ কল অপ্টিমাইজেশনের জন্য কার্যকর হয় effective ব্যবহারকারীর কাছে ইঙ্গিত দেওয়ার জন্য, তার কোনও পরামিতি সরবরাহ করার দরকার নেই, পরামিতিটির "ফলাফল" নামকরণ করা যুক্তিসঙ্গত হতে পারে:

def removeOccurence [A] (slice: Seq[A], original: Seq[A]) = {
  @scala.annotation.tailrec
  def remove (leftOriginal: Seq[A], result: Seq[A]) : Seq[A] =
    trimStart (slice, leftOriginal) match {
      case (h :: tail) => remove (tail, h +: result)
      case (Nil)       => result.reverse
    }
    remove (original, Nil)
}

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

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

তৃতীয় কারণ ইতিমধ্যে বলা হয়েছে, তবে আমার একটি ছোট বিচ্যুতি রয়েছে: আপনি একটি পদ্ধতি লিখুন যা কিছু কাজ করে, আপনি যাক এটি '' সর্বোচ্চ '' র একটি ফর্মকে মূল্যায়ন করে।

def max = {
  val result = somethingElseToDo
  if (foo) result else default 
}

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

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


0

অবজেক্ট পাসকালে এটি কোনও পছন্দ নয়। আপনাকে Resultফাংশনের কোডের কোথাও ভেরিয়েবলের মান নির্ধারণ করতে হবে।

উদাহরণ:

function AddIntegers( A,B: Integer): Integer;
begin
  Result := A + B; 
end; 

সুতরাং আমার কাছে খুব সহজেই একটি "ফলাফল" (বা "রেটর্নো") আছে, যেমনটি আমি ভাষাটির সংরক্ষিত শব্দের সাথে নামের দ্বন্দ্ব এড়ানোর জন্য পর্তুগিজ ভাষায় বানান করেছিলাম একটি ফেরতের মান পাওয়ার জন্য vari

সিউর থেকে, যদি এটি কোনও সি-উত্পন্ন ভাষায় খুব সাধারণ অভিব্যক্তি হয় তবে আমি কোনও ফলাফল পরিবর্তনশীল হিসাবে ঘোষণা করতে বিরত হবো না - সরাসরি প্রকাশটি ফিরিয়ে দেব।


0

এটি কেবল আপনি ফলাফলটির নাম রাখেন না (আমি 'r' এর জন্য বিশেষ), এটি কীভাবে ব্যবহৃত হয় তাও নয়। উদাহরণস্বরূপ, যদি আপনি একটি রিটার্ন ভেরিয়েবল রাখতে চলেছেন তবে প্রতিটি রিটার্নের বিবৃতিতে এটি ফিরিয়ে দেওয়া উচিত। 'রিটার্ন আর' নেই! শেষে, তবে পদ্ধতি / ফাংশন জুড়ে 'রিটার্ন এম * x + বি; "এর মতো জিনিসগুলি ছিটিয়ে দিন" "আর = মি * x + বি; পরিবর্তে আর; "


-1

ফলাফল ঠিক আছে। আমি কোডটি প্রথম নজরে বুঝতে সক্ষম হয়েছি যাতে পরিবর্তনশীল নামটি উদ্দেশ্যটি সম্পাদন করে।

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