কেন একটি জাভা উত্স ফাইল এতে থাকা সর্বজনীন শ্রেণীর নাম বহন করে?


14

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


4
নির্দিষ্টকরণ ব্যতীত, জাভা যেভাবে ইঞ্জিনিয়ার হয়েছিল তা এটি একটি historicalতিহাসিক নকশা শিল্পকর্ম। জাভা-র অনুরূপ সি-র মতো সাম্প্রতিককালে আরও বেশি ডিজাইন করা ভাষায় এই বিধিনিষেধ নেই।
gahooa

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

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

4
@ গাহোয়া এটি কোনও নকশা শিল্পকর্ম নয়, এটি ইচ্ছাকৃতভাবে নকশার সিদ্ধান্ত decision এটি অনেক কিছুই সহজ করে তোলে।

1
গ্রেপ ব্যবহার সম্পর্কে কী ?
ব্যবহারকারী

উত্তর:


19

তাঁর একটি জাভা বিশেষজ্ঞের নিউজলেটারগুলিতে হেইঞ্জ কাবুটজ ওক ল্যাঙ্গুয়েজ স্পেসিফিকেশনের মাধ্যমে খনন করেছেন । সে লেখে:

কেন প্রতিটি পাবলিক ক্লাস পৃথক ফাইলে? (অধ্যায় 1)

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

সাইডবারে এটি ব্যাখ্যা করেছে কেন: "দক্ষ প্যাকেজ আমদানির জন্য এটি প্রয়োজনীয় যদিও এটি কম্পাইলার দ্বারা এই বিধিনিষেধ এখনও প্রয়োগ করা হয়নি" "

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

http://www.javaspecialists.eu/archive/Issue055.html


1
সামান্য গতি সংকলন করতে ? সত্যি? না কারণ এটি আপনার কোডটিকে আরও বেশি সংগঠিত করে? আমি অত্যন্ত সন্দেহ এই সঠিক উত্তর।
ব্লুরাজা - ড্যানি পিফ্লুঘুফ্ট

1
@ ব্লুরাজা-ড্যানিপ্লুঘুফুট 1998 সালে, আমি নিশ্চিত যে এটি আরও অনেক বড় পার্থক্য করেছে
TheLQ

8

কারণগুলি আমি ভাবতে পারি

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

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