আপনার কোটলিন গ্রন্থাগারকে কীভাবে আলোকিত করবেন তার জন্য 7 টি পরামর্শ

মুখবন্ধ

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

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

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

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

1. সম্প্রসারণ ফাংশন

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

এটি মাথায় রেখে, অনেকগুলি গ্রন্থাগার যা সজ্জিত, স্থিতিশীল কারখানার পদ্ধতি বা অন্য কোনও কিছু ব্যবহার না করে বিদ্যমান শ্রেণিগুলির (যেমন দেখুন, প্রসঙ্গ ইত্যাদি) অতিরিক্ত ক্রিয়াকলাপ সরবরাহ করে, এক্সটেনশান কার্যকারিতা হিসাবে তাদের কাজগুলি নির্বিঘ্নে সরবরাহ করে উপকৃত হতে পারে শুরু থেকেই মূল ক্লাসে উপস্থিত থাকত।

ডিফল্ট আর্গুমেন্টের মান

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

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

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

3. আইটেম

আপনি নিজেই জাভাতে সিঙ্গলটন প্যাটার্নটি প্রয়োগ করতে পারেন? আপনার সম্ভবত ছিল, এবং যদি তা হয় তবে আপনার জানা উচিত যে এটি সময়ে কতটা বিশ্রী হতে পারে:

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

বাক্য গঠনটি বাদ দিয়ে, এটি দুর্দান্ত যে অবজেক্ট ডিক্লেয়ারেশনের সূচনাটি থ্রেড-সেফ উভয়ই এবং প্রথম অ্যাক্সেসের সূচনাতে পিছিয়ে রয়েছে:

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

4. উত্স ফাইল

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

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

তবে আপনি ফাইলের আকারের সাথে কোনও ব্যবহারকারীকে পরাভূত করার এবং 13,000 ডলার সারি যুক্ত একটি পুনর্ব্যবহারযোগ্য শ্রেণিতে পরিণত করার ঝুঁকিটি চালাবেন না too

5. কর্টিনস

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

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

Coroutines ভাল পুরানো জাভা থ্রেড চেয়ে ভাল সঞ্চালন করার সময়, তারা আপনার কোড পঠনযোগ্য তৈরি করতে অনেক এগিয়ে যায়:

6. চুক্তি

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

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

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

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

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

আপনি যেমন @ এক্সপেরিমেন্টাল চুক্তি টীকা থেকে লক্ষ্য করেছেন, চুক্তিগুলি এখনও পরীক্ষার পর্যায়ে রয়েছে, তাই কেবল সময়ের সাথে সাথে এপিআই পরিবর্তন হবে না, তবে এটি পরিপক্ক হওয়ার সাথে সাথে কিছু নতুন কার্যকারিতা থেকে তা বেরিয়ে আসতে পারে।

7. জাভা আন্তঃক্রিয়াশীলতা

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

প্রথমটি হ'ল জাভাতে কোটলিন এক্সটেনশন ফাংশনগুলি কুশ্রী স্ট্যাটিক পদ্ধতিতে সংকলিত হয়, পদ্ধতির প্রথম যুক্তিটি একটি রিসিভার টাইপ সহ:

যদিও এখানে আপনার সত্যিই খুব বেশি নিয়ন্ত্রণ নেই, আপনি উত্স ফাইলের শুরুতে উপরের প্যাকেজ-স্তরের ফাংশনগুলি অন্তর্ভুক্ত করে নিম্নলিখিত লাইনটি যুক্ত করে অন্তত উত্পন্ন শ্রেণীর নাম পরিবর্তন করতে পারেন:

আপনি কীভাবে সামান্য উত্পন্ন কোডকে প্রভাবিত করতে পারেন তার আরেকটি উদাহরণ সহচর অবজেক্টের পদ্ধতির ব্যবহারের সাথে সম্পর্কিত:

আপনি কোটলিনকে @ জেভিএম স্ট্যাটিক টীকা সহ সঙ্গী অবজেক্টে সংজ্ঞায়িত ফাংশনের পরিবর্তে স্থির শ্রেণি তৈরি করতে বাধ্য করতে পারেন:

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

সর্বশেষে তবে সর্বনিম্ন নয়, জাভা ব্যবহারকারীদের জন্য ক্রিয়াকলাপের ব্যতিক্রমগুলি নির্ধারণ করা সম্ভব, যদিও এগুলি সরাসরি কোটলিনে উপলভ্য নয়। এটি কার্যকর হতে পারে কারণ ব্যতিক্রম ঘোষণার দৃষ্টান্ত জাভা এবং কোটলিনে পৃথক:

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

শেষের সারি

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