উত্তেজনাপূর্ণ অন্তর্ভুক্ত হওয়ার সাথে সাথে শিরোনামগুলির উপর নির্ভর করা কি ভাল অনুশীলন?


37

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

এখানে একটি উদাহরণ দেওয়া হল Entity.hpp:

#include "RenderObject.hpp"
#include "Texture.hpp"

struct Entity {
    Texture texture;
    RenderObject render();
}

(আসুন ধরে নিই যে এর জন্য একটি ফরওয়ার্ড ডিক্লেয়ারেশন RenderObjectকোনও বিকল্প নয়।)

এখন, আমি জানি যে এর RenderObject.hppঅন্তর্ভুক্ত রয়েছে Texture.hpp- আমি জানি যে প্রত্যেকেরই সদস্য RenderObjectরয়েছে has Textureতবুও আমি স্পষ্টভাবে অন্তর্ভুক্ত Texture.hppমধ্যে Entity.hpp, কারণ আমি নিশ্চিত যদি এটি একটি ভাল ধারণা তে এটি অন্তর্ভুক্ত করা হচ্ছে নির্ভর নই RenderObject.hpp

তো: এটা কি ভাল অনুশীলন নাকি?


19
আপনার উদাহরণে অন্তর্ভুক্ত রক্ষীরা কোথায়? আপনি কেবল দুর্ঘটনাক্রমে তাদের ভুলে গেছেন, আশা করি?
ডক ব্রাউন

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

এই কারণেই আছে #ifndef _RENDER_H #define _RENDER_H ... #endif
সাম্পাথিস্রিস

@ ডাঙ্ক আমি মনে করি আপনি সমস্যার ভুল বুঝেছেন। তাঁর পরামর্শগুলির সাথে যেটি হওয়া উচিত নয়।
মাকিং হাঁস

1
@ ডকব্রাউন, সেটেল করবেন, #pragma onceনা?
পেসারিয়ার

উত্তর:


65

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

কারণ:

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

একটি তাত্পর্যপূর্ণ হ'ল এটি ফাইলের মধ্যে স্পষ্টভাবে প্রয়োজন না হলে আপনার কখনই অন্য শিরোনামে শিরোনাম অন্তর্ভুক্ত করা উচিত নয়।


10
করোলারির সাথে সম্মত হন - প্রোভিসোর সাথে এটির প্রয়োজন না হলে অন্য শিরোনামটি সবসময়ই অন্তর্ভুক্ত করা উচিত!
অ্যান্ড্রু

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

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

6
গুগল এই পরামর্শটি যথাযথভাবে প্রয়োগ করতে সহায়তা করার জন্য একটি সরঞ্জাম তৈরি করেছে, যাকে আপনি কী ব্যবহার করবেন বলে ডাকা হয় ।
ম্যাথু জি।

3
বৃহত একাকী শিরোনামগুলির সাথে প্রাথমিক সংকলনের সময় ইস্যুটি শিরোনাম কোডটি নিজেই সংকলন করার সময় নয় তবে প্রতিবার অ্যাপ্লিকেশনটিতে প্রতিটি সিপিপি ফাইল সংকলন করে শিরোনাম পরিবর্তিত হয়। পূর্বনির্ধারিত শিরোনামগুলি এতে সহায়তা করে না।
রোবট

23

থাম্বের সাধারণ নিয়মটি হল: আপনি যা ব্যবহার করেন তা অন্তর্ভুক্ত করুন। আপনি যদি সরাসরি কোনও বস্তু ব্যবহার করেন তবে তার হেডার ফাইলটি সরাসরি অন্তর্ভুক্ত করুন। আপনি যদি এমন কোনও বস্তু A ব্যবহার করেন যা B ব্যবহার করে তবে নিজে B ব্যবহার করেন না, কেবল আহকে অন্তর্ভুক্ত করুন

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


10

আমি ভাবতে থাকি যে আমি নির্দিষ্টভাবে কোনও নির্দিষ্ট ফাইলে সরাসরি ব্যবহৃত সমস্ত শিরোনামকে স্পষ্টভাবে অন্তর্ভুক্ত করা উচিত

হ্যাঁ।

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

ডাবল-অন্তর্ভুক্তি ক্ষতিকারক নয় তা নিশ্চিত করার জন্য আমাদের শিরোনাম রক্ষক রয়েছে।


3

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

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

আপনার যদি একটি শিরোনাম ফাইল যুক্ত করার প্রয়োজন হয় এবং এটি সরাসরি অন্তর্ভুক্ত না করে এটি অন্য যে কোনও জায়গায় সংজ্ঞায়িত কোনও আইটেম ব্যবহার করে তা খুঁজে পাওয়ার জন্য এটি একটি আসল ব্যথা so সুতরাং আপনাকে খুঁজে বের করতে হবে (এবং সম্ভবত ভুলটি দিয়ে শেষ করতে পারেন!)

অন্যদিকে, এটির (একটি সাধারণ নিয়ম হিসাবে) আপনার যদি দরকার নেই এমন কোনও ফাইল অন্তর্ভুক্ত করে তবে তা বিবেচ্য নয় ...


ব্যক্তিগত স্টাইলের পয়েন্ট হিসাবে, আমি # ফাইলগুলিকে বর্ণানুক্রমিক ক্রমে সজ্জিত করি, সিস্টেম এবং প্রয়োগে বিভক্ত হয়ে যাই - এটি "স্ব অন্তর্ভুক্ত এবং সম্পূর্ণ সুসংগত" বার্তাটিকে শক্তিশালী করতে সহায়তা করে।


অর্ডার অন্তর্ভুক্ত সম্পর্কে নোট: কখনও কখনও ক্রমটি গুরুত্বপূর্ণ, উদাহরণস্বরূপ যখন এক্স 11 শিরোনাম অন্তর্ভুক্ত থাকে। এটি নকশার কারণে হতে পারে (যা সম্ভবত এটি নকশা হিসাবে খারাপ হিসাবে বিবেচিত হতে পারে), কখনও কখনও এটি দুর্ভাগ্যজনক অসম্পূর্ণতার কারণে হয়।
জলদি

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

2

এটি নির্ভর করে যে ট্রানজিটিভ অন্তর্ভুক্তি প্রয়োজনীয়তার দ্বারা (যেমন বেস শ্রেণি) বা বাস্তবায়নের বিশদ (ব্যক্তিগত সদস্য) কারণে।

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

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

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


2

অন্য কেস হতে পারে: আপনার আহ, ভি এবং আপনার সি সি পি পি রয়েছে, ভিতে আহ অন্তর্ভুক্ত রয়েছে

সুতরাং C.cpp এ, আপনি লিখতে পারেন

#include "B.h"
#include "A.h" // < this can be optional as B.h already has all the stuff in A.h

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

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


1

প্রস্তাবিত উত্তরগুলি থেকে আমি অনুরূপ কিছুটা ভিন্ন পদ্ধতির গ্রহণ করছি।

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

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

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

যদিও কিছুটা পুরানো, বড় স্কেল সি ++ সফটওয়্যার ডিজাইন (জন লাকোস দ্বারা) বিশদগুলিতে এই সমস্ত ব্যাখ্যা করে।


1
এই কৌশলটির সাথে দ্বিমত পোষণ করুন ... আপনি যদি কোনও উত্স ফাইলে একটি শিরোনাম ফাইল অন্তর্ভুক্ত করেন তবে আপনাকে তার সমস্ত নির্ভরতা সন্ধান করতে হবে। চেষ্টা করে তালিকাটি নথিভুক্ত করার চেয়ে সরাসরি অন্তর্ভুক্ত করা ভাল!
অ্যান্ড্রু

@ অ্যান্ড্রুতে কি এবং কতবার অন্তর্ভুক্ত রয়েছে তা যাচাই করার জন্য সরঞ্জাম এবং স্ক্রিপ্ট রয়েছে।
BЈовић

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

1
@CortAmmon সাধারণত হেডার রক্ষীদের অন্তর্ভুক্ত আছে, কিন্তু কম্পাইলার এখনও এটি খোলার জন্য আছে, এবং যে স্লো অপারেশন
BЈовић

4
@ বিউ: আসলে, তারা তা করে না। তাদের যা যা করতে হবে তা হ'ল ফাইলটির "সাধারণ" শিরোনাম রক্ষক রয়েছে এবং তাদের পতাকাঙ্কিত করতে হবে যাতে এটি কেবল একবার এটি খোলায়। উদাহরণস্বরূপ, জিসিসি
কর্ট

-4

ভাল অনুশীলন হ'ল আপনার শিরোনাম কৌশলটি যতক্ষণ তা সঙ্কলিত হয় সে সম্পর্কে চিন্তা করা উচিত নয়।

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

এবং হ্যাঁ, আপনি একবার জমিতে নামা শুরু করার পরে আপনার সেই অর্ডার ভিত্তিক সমস্যাগুলি হবেfriend

আপনি দুটি ক্ষেত্রে সমস্যাটি ভাবতে পারেন।


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

শিরোনামগুলির সেটটি যথেষ্ট ছোট যে ক্রপ হয়ে যাওয়া কোনও সমস্যা সমাধান করা জটিল নয়। যে কোনও কঠিন সমস্যা এক বা দুটি শিরোনাম পুনর্লিখনের মাধ্যমে স্থির করা হয়। আপনার শিরোনাম কৌশল সম্পর্কে চিন্তিত হওয়া এমন সমস্যাগুলি সমাধান করা যা বিদ্যমান নেই।


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

সমাধান: এই মুহুর্তে, আপনার যৌক্তিক গোষ্ঠীগুলির মধ্যে আপনার ক্লাসগুলি সম্পর্কে চিন্তা করা এবং সেই গোষ্ঠীগুলিকে শিরোনামে সংগ্রহ করা উচিত যা আপনাকে #includeবারবার বাধা দেওয়া থেকে বিরত রাখে। এটি কেবল জীবনকে সহজ করে তোলে না, প্রাকম্পম্পাইল্ড শিরোনামগুলির সুবিধা নেওয়ার জন্য এটি একটি প্রয়োজনীয় পদক্ষেপ ।

#includeআপনার প্রয়োজন নেই এমন ক্লাসগুলি শেষ করেছেন তবে কে যত্ন করে ?

এই ক্ষেত্রে, আপনার কোডটি দেখতে এমন হবে ...

#include <Graphics.hpp>

struct Entity {
    Texture texture;
    RenderObject render();
}

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

3
আমি ব্যক্তিগতভাবে প্রত্যক্ষ করেছি যে "উদ্বেগের বিষয়টিকে সঙ্কলিত করতে" যদি আপনার এনামের সাথে কোনও মান যোগ করা হয় তখন আমাদের অ্যাপ্লিকেশনটি 30 মিনিট সময় নেয় কিনা তা সঙ্কলন করবেন না, কীভাবে আমরা এটি ঠিক করব !? "
রোবট

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

# 2 এর সাথে সম্মত হন। পূর্ববর্তী ধারণাগুলি হিসাবে - আমি অটোমেশনের জন্য আশা করি যা স্থানীয় শিরোলেখ ব্লককে আপডেট করবে - ততক্ষণ আমি একটি সম্পূর্ণ তালিকার পক্ষে পরামর্শ চাই।
chux - মনিকা

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