কোথায় আপনি ধ্রুবক রাখা উচিত এবং কেন?


34

আমাদের বেশিরভাগ বৃহত অ্যাপ্লিকেশনগুলিতে, আমাদের কাছে "ধ্রুবকদের" জন্য কেবলমাত্র কয়েকটি স্থান থাকে:

  • জিইউআই এবং অভ্যন্তরীণ প্রতিযোগিতার জন্য একটি শ্রেণি (ট্যাব পৃষ্ঠার শিরোনাম, গ্রুপ বাক্স শিরোনাম, গণনার কারণ, গণনা)
  • ডাটাবেস টেবিল এবং কলামগুলির জন্য একটি শ্রেণি (এই অংশটি কোড উত্পন্ন হয়) এবং তাদের জন্য পঠনযোগ্য নাম (ম্যানুয়ালি নির্ধারিত)
  • অ্যাপ্লিকেশন বার্তাগুলির জন্য একটি শ্রেণি (লগিং, বার্তা বাক্স ইত্যাদি)

ধ্রুবকগুলি সাধারণত সেই শ্রেণীর বিভিন্ন স্ট্র্যাটে বিভক্ত হয়। আমাদের সি ++ অ্যাপ্লিকেশনগুলিতে ধ্রুবকগুলি কেবলমাত্র .h ফাইলে সংজ্ঞায়িত করা হয় এবং মানগুলি .cpp ফাইলে নির্ধারিত হয়।

এর একটি সুবিধা হ'ল সমস্ত স্ট্রিং ইত্যাদি একটি কেন্দ্রিয় স্থানে রয়েছে এবং প্রত্যেকেই জানে যে যখন কোনও কিছু পরিবর্তন করতে হবে তখন সেগুলি কোথায় পাওয়া যাবে।

এটি বিশেষত এমন কিছু যা প্রকল্প পরিচালকরা পছন্দ করে মনে করছেন লোকেরা আসা-যাওয়া করতে পারে এবং এইভাবে প্রত্যেকে অ্যাপ্লিকেশনটির কাঠামোটি খনন না করেই এই জাতীয় তুচ্ছ জিনিসগুলিকে পরিবর্তন করতে পারে।

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

তবে, আমি কিছু অসুবিধা দেখতে পাচ্ছি:

  • প্রতিটি একক শ্রেণি দৃly়ভাবে ধ্রুবক ক্লাসে মিলিত হয়
  • যুক্ত করা / অপসারণ / পুনর্নবীকরণ / একটি ধ্রুবক স্থানান্তরিত করতে অ্যাপ্লিকেশনটির কমপক্ষে 90% পুনঃসংশোধন প্রয়োজন (দ্রষ্টব্য: মান পরিবর্তন করা, কমপক্ষে সি ++ এর জন্য নয়)। আমাদের ১৫০০ ক্লাস সহ একটি সি ++ প্রকল্পে এর অর্থ প্রায় 7 মিনিটের সংকলনের সময় (প্রাকম্পাইল্ড শিরোনামগুলি ব্যবহার করা; এটি ছাড়াই এটি প্রায় 50 মিনিটের) এবং কিছু স্থির লাইব্রেরির সাথে প্রায় 10 মিনিটের সংযোগের অর্থ।
  • ভিজ্যুয়াল স্টুডিও কম্পাইলারের মাধ্যমে একটি গতি অনুকূলিতকরণের রিলিজ তৈরি করতে 3 ঘন্টা সময় লাগে। আমি জানি না বিপুল পরিমাণ শ্রেণিক সম্পর্কের উত্স কিনা তবে তা পাশাপাশি হতে পারে।
  • আপনি সাময়িকভাবে হার্ড-কোডিং স্ট্রিংগুলিকে সোজা কোডে চালিত করেন কারণ আপনি খুব দ্রুত কিছু পরীক্ষা করতে চান এবং কেবলমাত্র সেই পরীক্ষার জন্য 15 মিনিট অপেক্ষা করতে চান না (এবং সম্ভবত প্রতিটি পরবর্তী)। "আমি পরে এটি সংশোধন করব" - ধারণাগুলি কী ঘটে তা সকলেই জানেন।
  • অন্য প্রকল্পে শ্রেণীর পুনরায় ব্যবহার করা সবসময় সহজ নয় (প্রধানত অন্যান্য টাইট কাপলিংয়ের কারণে, তবে ধ্রুবকগুলি পরিচালনা করা এটিকে সহজ করে না))

এমন ধ্রুবক কোথায় সঞ্চয় করবেন? এছাড়াও আপনার প্রকল্প পরিচালককে বোঝাতে আপনি কোন যুক্তি আনবেন যে আরও ভাল ধারণা রয়েছে যা উপরের তালিকাভুক্ত সুবিধাগুলি মেনে চলে?

একটি সি ++ দিতে নির্দ্বিধায় - নির্দিষ্ট বা স্বতন্ত্র উত্তর।

পিএস: আমি জানি এই প্রশ্নটি একধরণের সাবজেক্টিভ তবে আমি এই সাইটের প্রশ্নের চেয়ে এই জাতীয় প্রশ্নের চেয়ে ভালতর জায়গা আর কোথাও জানি না।

এই প্রকল্পে আপডেট

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

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

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

এই সত্য - এবং অন্যান্য সুবিধাগুলি যেমন কম টান সংযোগ, আরও ভাল পুনঃব্যবহারযোগ্যতা ইত্যাদি - এছাড়াও দেখিয়েছিল যে "ধ্রুবকগুলি" বিভক্ত করার জন্য সময় ব্যয় করা এত খারাপ ধারণা ছিল না ;-)

Update2

যেহেতু এই প্রশ্নটি এখনও কিছুটা মনোযোগ পেয়েছে:
গত কয়েক বছর ধরে আমি যা করছি তা এখানে:

প্রতিটি ধ্রুবক, পরিবর্তনশীল ইত্যাদি ঠিক তার জন্য প্রাসঙ্গিক স্কোপে রাখুন: আপনি যদি কেবল একটি একক পদ্ধতিতে ধ্রুবক ব্যবহার করেন তবে সেই পদ্ধতিতে এটি সংজ্ঞায়িত করা ঠিক আছে। যদি কোনও একক শ্রেণি এটিতে আগ্রহী হয় তবে এটিকে শ্রেণীর ব্যক্তিগত প্রয়োগের বিশদ হিসাবে ছেড়ে দিন। একইটি নেমস্পেস, মডিউল, প্রকল্প, কোম্পানির সুযোগের জন্য প্রযোজ্য। আমি সহায়ক ফাংশন এবং এর মতোগুলির জন্যও একই প্যাটার্নটি ব্যবহার করি। (আপনি যদি কোনও সার্বিক কাঠামো তৈরি করেন তবে এটি 100% প্রয়োগ করতে পারে না))

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

আপনি আরও জানতে চাইলে বিশেষত ইন্টারফেস বিভাজন নীতি এবং একক দায়িত্বের নীতিটি একবার দেখুন।

আপনি যদি সম্মত হন তবে কালেবের উত্তরকে সমর্থন করুন যেহেতু এই আপডেটটি মূলত তিনি যা বলেছিলেন সেটিকে আরও সাধারণ মনে করা উচিত।


2
ব্যক্তিগতভাবে আমার কাছে কোনও স্থানে UI শিরোনাম বা বার্তা স্ট্রিং থাকবে না n't আমি তাদের app.config
jk

1
আপনি কীভাবে এখন এটি করছেন তা আমি পছন্দ করি - আমি আপনার অসুবিধাগুলি বুঝতে পারি তবে আমাদের কেবল এটির মোকাবিলা করতে হবে।
বিগটাং

1
আমি একটি বৃহত জাভা প্রকল্পে ঠিক একই সমস্যাটি দেখেছি ... একটি বিশাল "ধ্রুবক" ইন্টারফেস, এতে কোনও কিছু পরিবর্তন করুন এবং গ্রহনটি পুনরায় সংকলনের জন্য 15 মিনিট অপেক্ষা করুন। আমি কালেবের সাথে আছি: যে ধ্রুবকগুলি তারা স্বাভাবিকভাবেই অন্তর্ভুক্ত তাদের গোষ্ঠীবদ্ধ করুন, কোডগুলি ব্যবহার করুন যা তাদের ব্যবহার করে close এগুলি পৃথক রাখা কারণ এগুলি ধ্রুবক।
মাইকেল বর্গওয়ার্ট

আঁটসাঁট মিলন কোনও সমস্যা নয়, কারণ এটি আসলে আপনি চান। আপনি আপনার ধ্রুবক ফাইলের একটি পরিবর্তন সম্ভবত প্রচুর উত্স ফাইলগুলিকে প্রভাবিত করতে চান । (অবশ্যই আপনার অন্যান্য সমস্যাও রয়েছে)।
gnasher729

@ gnasher729 এটি কেবলমাত্র সত্য যদি প্রচুর ক্লাস একই ধ্রুবক ব্যবহার করে। আপনি কখনই চাইবেন না যে ক্লাসগুলি তাদের সাথে সম্পর্কিত নয় এমন ধ্রুবকের সাথে দৃ tight়ভাবে মিলিত হোক। আপনি অনুলিপি না করে বা বিচ্ছিন্ন পরীক্ষা না চালিয়ে অন্য প্রকল্পে এটি পুনরায় ব্যবহার করার চেষ্টা না করা পর্যন্ত প্রথমে সমস্যাটি মনে হচ্ছে না
টিম মায়ার

উত্তর:


29

ধ্রুবকগুলি যা কোনও শ্রেণীর সাথে সুনির্দিষ্ট হয় সেই শ্রেণীর ইন্টারফেসে।

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

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


1
আপনার আগ্রহের ক্ষেত্রে: আমি আপনার উত্তর এবং অন্যদের অনুসরণ করে আমি যা অর্জন করেছি তার সাথে আমার প্রশ্ন আপডেট করেছি
টিম মেয়ার

6

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

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


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

আপনার আগ্রহের ক্ষেত্রে: আমি আপনার উত্তর এবং অন্যদের অনুসরণ করে আমি যা অর্জন করেছি তার সাথে আমার প্রশ্ন আপডেট করেছি
টিম মেয়ার

2

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

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

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

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


2

কোনও সাধারণ সমাধান নেই। কর্মক্ষমতা, ব্যবহারযোগ্যতা, সুরক্ষা এবং একটি ধ্রুবকের জীবনচক্র সম্পর্কে নিজেকে জিজ্ঞাসা করুন।

পারফরম্যান্সের সাথে তারা তাদের পরিধি হিসাবে আরও বেশি সংজ্ঞায়িত হয়।

তারা যুক্তিযুক্তভাবে এবং তাদের ক্ষেত্রের বাইরে যত বেশি গোষ্ঠীযুক্ত, পুনরায় ব্যবহারযোগ্যতা তত বেশি।

খরচ যত কম অ্যাক্সেসযোগ্য, তত বেশি নিরাপত্তা higher

একটি ধ্রুবকের জীবনকাল যত বেশি, আপনি ইউএসবিটিটির জন্য এটি যেখানে রাখবেন সেদিকে তত কম যত্ন করে না।

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

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

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


1

আমি এই ধ্রুবকগুলির সমস্ত কিছু একরকম কনফিগারেশন ফাইলের মধ্যে রাখার পরামর্শ দেব। জাভা অ্যাপ্লিকেশনগুলির জন্য, আমরা সাধারণত .poperties ফাইলগুলি ব্যবহার করি, প্রতিটি লাইনের "(কী) = (মান)" হিসাবে ফর্ম্যাট করা একটি সাধারণ পাঠ্য। উদাহরণ

মেইনপ্যানেল.টাইটেল = আমাদের আবেদনে স্বাগতম Welcome
DB.table.users = TBL_USERS
logging.filename = application.log

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

একটি বাস্তবায়নের জন্য, আমি এই এসও প্রশ্নটি পেয়েছি: https://stackoverflow.com/questions/874052/properties-file-library-for-c-or-c (গুগল অনুসন্ধানে এটি প্রথম হিট - আমি করিনি আসলে এই সফ্টওয়্যারটি আমি নিজেই ব্যবহার করেছি)।


সি ++ প্রকল্পগুলির জন্য, কেবলমাত্র একটি মান পরিবর্তন করলে আমাদের কেবল ধ্রুবক ফাইলটি পুনরায় সংকলন করা দরকার। এটি কারণ .cpp ফাইলে মানগুলি নির্ধারিত হয়। তবে যোগ করা / অপসারণ / নতুন নামকরণ / একটি ধ্রুবক সরানো এখনও সম্পূর্ণ পুনর্নির্মাণের প্রয়োজন
টিম মেয়ার

@ টিমমিয়ার: আপনি যদি একাধিক ফাইলের মধ্যে ধ্রুবকগুলি বিভক্ত করেন তবে একটি ধ্রুবক যুক্ত করা / অপসারণ করা কেবল সেই নির্দিষ্ট ফাইলের উপর নির্ভর করে এমন ফাইলগুলিকেই প্রভাবিত করবে, তাই না?
হতাশিত

সঠিক। মূল সমস্যাটি হ'ল যদি আমি এটির পরামর্শ দিই, লোকেরা আমার "সুবিধাগুলি" হিসাবে তালিকাভুক্ত জিনিসের একটি উল্লেখ করার ঝোঁক রয়েছে
টিম মেয়ার

তবে, আমি একই স্থানে বেশ কয়েকটি কনস্ট্যান্ট ফাইল রাখার বিষয়ে ভাবি নি
টিম মেয়ার

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