লাভ:
- কৃত্রিম বুদ্ধিমত্তা তৈরির কোড থাকার আগে MVVM-এর মতো আর্কিটেকচার চাপিয়ে এবং ছোট ছোট টুকরো করে স্তরে স্তরে অনুরোধ করে সহজে রক্ষণাবেক্ষণযোগ্য এবং পরীক্ষাযোগ্য কোড পাওয়া।
- ভাষা-নির্দিষ্ট ফাঁদগুলি সনাক্ত করার ক্ষমতা যেমন কোটলিনে নাল সেফটি এবং কোরোটিন, সুইফটে ঐচ্ছিক এবং মেমরি লুপ, এবং তাদের বিরুদ্ধে জেনারেট করা কোড পরীক্ষা করুন।
- ক্রস-প্ল্যাটফর্ম (ফ্লাটার, রিঅ্যাক্ট নেটিভ) প্রকল্পে প্রতিটি প্ল্যাটফর্মের জন্য আলাদাভাবে অনুমতি এবং কনফিগারেশন যাচাই করার ক্ষমতা
মোবাইল ডেভেলপমেন্টের হার্ট হল কোড, এবং সেখানেই AI থেকে সবচেয়ে বাস্তব লাভ দেখা যায়। কিন্তু বাক্যটি "এআই আমার জন্য কোড লিখতে দিন" তার নিজস্ব কৌশল নয়। ভাল কোড প্রজন্ম; এটির জন্য সঠিক ভাষা, সঠিক স্থাপত্য, সঠিক সীমানা এবং সঠিক বৈধতার সমন্বয় প্রয়োজন। এই ইউনিটে, আমরা শিখব কীভাবে সুইফটের জন্য দক্ষতার সাথে এবং নিরাপদে AI ব্যবহার করতে হয়, iOS-এর ভাষা, Kotlin, Android-এর ভাষা এবং ক্রস-প্ল্যাটফর্ম টুল যা একটি একক কোড বেস সহ দুটি প্ল্যাটফর্মে চলে। লক্ষ্য হল AI কে একটি "কোড অটোমেটন" হিসাবে নয় বরং একটি ত্বরণকারী হিসাবে যার আর্কিটেকচার আপনি নির্ধারণ করেন।
আর্কিটেকচার প্রথম, কোড দ্বিতীয়
সবচেয়ে সাধারণ ভুল হল একটি স্থাপত্য পরিকল্পনা ছাড়াই সরাসরি কোডের জন্য AI-কে জিজ্ঞাসা করা। এটি একটি ভিত্তি স্থাপন না করে একটি প্রাচীর নির্মাণের মত। মোবাইলে সবচেয়ে সাধারণ আর্কিটেকচার হল MVVM (মডেল-ভিউ-ভিউমডেল — একটি ডিজাইন প্যাটার্ন যা ডেটা, ডিসপ্লে এবং ডিসপ্লের লজিককে আলাদা করে)। এর মানে হল ভিউটি শুধুমাত্র একটি ভিউ, যুক্তি এবং স্টেট ভিউমডেলে থাকে এবং ডেটা মডেল লেয়ারে থাকে। আপনি যদি শুরু থেকেই এআই-এর উপর এই বিচ্ছেদ চাপিয়ে না দেন, তাহলে এটি একটি অস্থির এবং রক্ষণাবেক্ষণ করা কঠিন কাঠামো তৈরি করে যা স্ক্রিন কোডের সমস্ত যুক্তিকে ছিঁড়ে ফেলে।
ধাপে ধাপে একটি সুস্থ কোড প্রজন্মের প্রবাহ:
- প্রসঙ্গ দিন। প্ল্যাটফর্ম, ভাষা, সংস্করণ, স্থাপত্য, লাইব্রেরি ব্যবহৃত।
- স্তরগুলির জন্য জিজ্ঞাসা করুন। প্রথমে ডেটা মডেল, তারপর নেটওয়ার্ক/ডেটা লেয়ার, তারপর ভিউমডেল, শেষ পর্যন্ত স্ক্রীন।
- ছোট টুকরা জন্য জিজ্ঞাসা করুন. একটি পর্দা বা একটি ফাংশন; এটি একটি বিশাল 500-লাইন ফাইল নয়।
- প্রতিটি টুকরা যাচাই করুন. নির্মাণ, পরীক্ষা, সংহত; তারপর পরবর্তী ট্র্যাকে যান।
- একটি রিফ্যাক্টরের অনুরোধ করুন (কোড উন্নত করুন)। কাজের কোডের পরে "এইটিকে আরও পঠনযোগ্য এবং পরীক্ষাযোগ্য করুন" পদক্ষেপ।
ইঙ্গিত: এআইকে বলুন "এমভিভিএম অনুসারে কোডটি বিভক্ত করুন: কোন অংশটি ভিউ হওয়া উচিত, কোনটি ভিউমডেল হওয়া উচিত, কোনটি মডেল হওয়া উচিত, সেগুলি আলাদাভাবে দিন"। এই একক বাক্যটি জেনারেট করা কোডের স্থাপত্য গুণমানকে নাটকীয়ভাবে উন্নত করে।
কোটলিন এবং সুইফট: ভাষা-নির্দিষ্ট বিবেচনা
কোটলিন (অ্যান্ড্রয়েড) এবং সুইফ্ট (iOS) আধুনিক, সুরক্ষিত ভাষা, কিন্তু তাদের বিভিন্ন অসুবিধা রয়েছে। কোটলিনে, নাল সেফটি (টাইপ সিস্টেমের মাধ্যমে একটি পরিবর্তনশীল "নাল" হতে পারে কিনা তা পরীক্ষা করা) কখনও কখনও এআই দ্বারা শিথিলভাবে টাইপ করা হয়; অপ্রয়োজনীয়!! অপারেটর (যে চিহ্নটি শূন্য হলে ক্র্যাশ করতে বাধ্য করে) অ্যাপ্লিকেশনটি ক্রাশ করতে পারে। সুইফটে, ঐচ্ছিক ব্যবস্থাপনা এবং ধারণ চক্র গুরুত্বপূর্ণ; এআই ক্লোজারে [দুর্বল স্ব] যোগ করতে ভুলে যেতে পারে এবং এটি একটি মেমরি লিক তৈরি করবে।
সুতরাং আপনি যখন একটি ভাষা বেছে নিন, সেই অনুযায়ী প্রম্পটটি বানান: যেমন "কোটলিনে শূন্য নিরাপত্তা রক্ষা করুন, ব্যবহার করবেন না!!" অথবা "সুইফটে বন্ধ হওয়ার ক্ষেত্রে শক্তিশালী রেফারেন্স লুপিং প্রতিরোধ করুন"।
সতর্কতা: এআই-উত্পাদিত অ্যাসিঙ্ক্রোনাস কোডের বিশেষ মনোযোগ প্রয়োজন। Kotlin coroutines-এ ভুল স্কোপ বেছে নেওয়া বা Swift-এ async/await-এ মূল থ্রেড ব্লক করা অ্যাপ্লিকেশানটিকে ফ্রিজ করে দেবে। AI এই ভুলগুলি ঘন ঘন করে; এটি পরীক্ষা না করে বিশ্বাস করবেন না।
ক্রস-প্ল্যাটফর্ম ডেভেলপমেন্ট: ফ্লটার এবং রিঅ্যাক্ট নেটিভ
যারা একক কোড বেস সহ iOS এবং Android উভয়ে যেতে চান তাদের জন্য Flutter (Google এর ডার্ট ভাষা-ভিত্তিক টুলকিট) এবং React Native (Meta's JavaScript-ভিত্তিক সমাধান) আলাদা। এআই এই পরিবেশেও শক্তিশালী, কিন্তু কখনও কখনও প্ল্যাটফর্মের পার্থক্য (অনুমতি, স্টোরের নিয়ম, ডিভাইস-নির্দিষ্ট আচরণ) বাইপাস করে। উদাহরণস্বরূপ, ফ্লটারে, আইওএস এবং অ্যান্ড্রয়েডের বিভিন্ন ফাইলে ক্যামেরা অনুমতি সংজ্ঞায়িত করা হয়; AI শুধুমাত্র একটি লিখতে পারে। ক্রস-প্ল্যাটফর্ম কোডে, "উভয় প্ল্যাটফর্মের জন্য আলাদাভাবে প্রয়োজনীয় অনুমতি এবং কনফিগারেশন প্রদান করুন" বলা অপরিহার্য।
নির্বাচনের সারসংক্ষেপ:
এপ্রোচ
যখন
AI এর সাথে মনোযোগ
নেটিভ (কোটলিন/সুইফট)
সর্বোচ্চ কর্মক্ষমতা, ডিভাইস-গভীর ইন্টিগ্রেশন
প্রতিটি প্ল্যাটফর্ম আলাদা কোড আছে; দুইবার যাচাই করুন
ফ্লাটার
একটি দল, দ্রুত, সামঞ্জস্যপূর্ণ UI
প্ল্যাটফর্ম-নির্দিষ্ট অনুমতি/সেটিংস ম্যানুয়ালি চেক করুন
নেটিভ প্রতিক্রিয়া
ওয়েব/জেএস দল উপলব্ধ
সেতু (নেটিভ ব্রিজ) বিভাগগুলি সাবধানে পরীক্ষা করুন
তিনটি মিনি কেস
কেস 1 - করোটিন ফাঁদ। একটি অ্যান্ড্রয়েড দল এমন একটি ফাংশন পেয়েছে যা AI থেকে পণ্যের তালিকা টানে। কোডটি প্রধান থ্রেডে নেটওয়ার্ক অনুরোধ করছিল; সমস্যাটি পরীক্ষার ডিভাইসে দেখা যায়নি, তবে দুর্বল নেটওয়ার্কে, অ্যাপ্লিকেশনটি 4 সেকেন্ডের জন্য হিমায়িত হয়েছে এবং একটি ANR (অ্যাপ্লিকেশন নট রেসপন্ডিং) সতর্কতা দিয়েছে৷ এটি ঠিক করা হয়েছিল যখন AI কে বলা হয়েছিল "IO প্রেরণকারীতে নেটওয়ার্কের কাজ করুন"। পাঠ: সঙ্গতি সবসময় নিয়ন্ত্রিত হয়।
কেস 2 - মেমরি লিক। একজন iOS ডেভেলপার দেখেছেন যে AI-উত্পাদিত স্ক্রীন 20 বার খোলা এবং বন্ধ করার পরে, অ্যাপটির মেমরি 40 MB থেকে 180 MB পর্যন্ত বেড়েছে। কারণটি ছিল যে ক্লোজারে একটি অনুপস্থিত [দুর্বল স্ব] কারণে ভিউকন্ট্রোলার মেমরি থেকে সাফ করা যায়নি। Xcode এর মেমরি গ্রাফ ফাঁদ প্রকাশ. পাঠ: স্থানীয় বিকাশে মেমরি প্রোফাইল বাধ্যতামূলক।
কেস 3 — প্ল্যাটফর্ম পার্থক্য। একটি ফ্লাটার দল এআই থেকে গ্যালারি অ্যাক্সেস কোড পেয়েছে, এটি অ্যান্ড্রয়েডে কাজ করেছে কিন্তু iOS-এ ক্র্যাশ হয়েছে। কারণটি ছিল ফটো লাইব্রেরির অনুমতি বিবরণ (NSPhotoLibraryUsageDescription) Info.plist ফাইলে যোগ করা হয়নি; এআই শুধু অ্যান্ড্রয়েড সাইড লিখেছে। এটি একটি 15 মিনিটের সমাধান, তবে এটি ধরা না পড়লে এটি একটি স্টোর প্রত্যাখ্যান হয়ে যেত।
দুর্বল প্রম্পট / শক্তিশালী প্রম্পট
দুর্বল প্রম্পট: "কোটলিন কোড লিখুন যা API থেকে পণ্যগুলিকে টেনে আনে।"
শক্তিশালী প্রম্পট: "Android/Kotlin-এর জন্য কোড জেনারেট করুন যা REST API থেকে পণ্যের তালিকা টেনে আনে।- রেট্রোফিট সহ নেটওয়ার্ক লেয়ার, সাসপেন্ড ফাংশন- Dispatchers.IO-তে নেটওয়ার্ক জব; ব্লক করা মূল থ্রেড- MVVM: রিপোজিটরি -> ViewModel -> StateFlow-এর সাথে UI স্টেট- Error states: কোন নেটওয়ার্ক নেই, আলাদা সিল করা হয়েছে, Uxx4, সিকিউরিটি স্টেট!! আলাদা ফাইল হিসাবে স্তরগুলি রপ্তানি করুন, 1 বাক্য প্রতিটি ব্যাখ্যা করে।"
স্ট্রং প্রম্পটিং জেনারেট করা কোডটিকে আগের কেসের ফাঁদে পড়তে বাধা দেয়।
অনুলিপিযোগ্য টেমপ্লেট
স্তরযুক্ত উত্পাদন টেমপ্লেট: "[প্ল্যাটফর্ম/ভাষা]-এর জন্য [বৈশিষ্ট্য] বিকাশ করুন। ক্রমানুসারে উত্পাদন করুন: 1) ডেটা মডেল (ডেটা ক্লাস/স্ট্রাকট) 2) নেটওয়ার্ক বা ডেটা উত্স স্তর3) সংগ্রহস্থল 4) ভিউ মডেল (স্টেট ম্যানেজমেন্ট) 5) স্ক্রিন (ইউআই) প্রতিটি স্তর আলাদাভাবে রপ্তানি করুন, তাদের মধ্যে একটি ইন্টিগ্রেশন নোট যোগ করুন।"
ভাষা নির্দিষ্ট নিরাপত্তা টেমপ্লেট (কোটলিন):"এই কোটলিন কোডটি পর্যালোচনা করুন:- এর ব্যবহার পরিষ্কার করুন!! এবং প্ল্যাটফর্ম-টাইপ- করুটিন স্কোপ এবং প্রেরক নির্বাচন যাচাই করুন- মূল থ্রেডকে ব্লক করছে এমন কোন কল আছে?[কোড]"
ভাষা-নির্দিষ্ট নিরাপত্তা টেমপ্লেট (সুইফট): "এই সুইফ্ট কোডটি পর্যালোচনা করুন:- বন্ধ হওয়ার সময় চক্র ধরে রাখার ঝুঁকি (দুর্বল/অপরিচিত স্ব-)- ঐচ্ছিক শক্তি-আনওর্যাপ (!)- ভারী কাজ যা মূল থ্রেড [কোড] থেকে সরানো দরকার"
ক্রস-প্ল্যাটফর্ম নিয়ন্ত্রণ টেমপ্লেট: "আইওএস এবং অ্যান্ড্রয়েড উভয়েই এই [ফ্লাটার/রিঅ্যাক্ট নেটিভ] বৈশিষ্ট্যের জন্য প্রয়োজনীয় সমস্ত অনুমতি, কনফিগারেশন এবং প্ল্যাটফর্ম-নির্দিষ্ট কোড তালিকাভুক্ত করুন। পৃথক Info.plist এবং AndroidManifest.xml এন্ট্রি প্রদান করুন।"
সাধারণ ভুল
- আর্কিটেকচার আরোপ না করে কোড চাচ্ছে। ফলাফল: অপ্রস্তুত কাঠামো যা সবকিছুকে পর্দায় আটকে দেয়।
- সমবর্তী কোড পরীক্ষা না করে বিশ্বাস করা। প্রধান থ্রেড ব্লক এবং ভুল সুযোগ ক্র্যাশের সবচেয়ে সাধারণ কারণ।
- মেমরি ব্যবস্থাপনা উপেক্ষা করা. বিশেষ করে iOS ক্লোজারে ফাঁস; এটি একটি প্রোফাইল গ্রহণ ছাড়া লক্ষ্য করা যায় না.
- প্ল্যাটফর্ম পার্থক্য বাইপাস. ক্রস-প্ল্যাটফর্ম সরঞ্জামগুলিতে, দুটি প্ল্যাটফর্মে অনুমতি এবং কনফিগারেশন আলাদাভাবে লেখা হয়।
- লাইব্রেরি সংস্করণ যাচাই করা হচ্ছে না। AI অপ্রচলিত Retrofit/Alamofire API সুপারিশ করতে পারে; অফিসিয়াল ডকুমেন্ট দিয়ে চেক করুন।
- একটি একক দৈত্য ফাইল উত্পাদন. বজায় রাখা এবং যাচাই করা অসম্ভব; স্তরের জন্য জিজ্ঞাসা করুন।
সংক্ষেপে
আপনি যখন আর্কিটেকচার নির্দিষ্ট করেন তখন AI সহ কোড জেনারেশন শক্তিশালী। প্রথমে MVVM এর মত একটি কাঠামো আরোপ করুন, তারপর স্তরে স্তরে এবং ছোট টুকরো করে অনুরোধ করুন, প্রতিটি টুকরো কম্পাইল করুন এবং পরীক্ষা করুন। কোটলিনে শূন্য নিরাপত্তা এবং কোরোটিন, সুইফটে ঐচ্ছিক এবং মেমরি লুপগুলির বিশেষ মনোযোগ প্রয়োজন। ক্রস-প্ল্যাটফর্ম সরঞ্জামগুলিতে, প্রতিটি প্ল্যাটফর্মের জন্য অনুমতি এবং কনফিগারেশন আলাদাভাবে লেখা হয়। শক্তিশালী প্রম্পট ভাষা, সংস্করণ, স্থাপত্য, এবং ভাষা-নির্দিষ্ট নিরাপত্তা নিয়ম সামনের দিকে বলে; এটি উৎপাদনে সবচেয়ে সাধারণ ক্র্যাশ এবং লিক ত্রুটি প্রতিরোধ করে।
আবেদন টাস্ক
একটি তালিকা পর্দার জন্য (যেমন "যোগাযোগ তালিকা"), আপনার পছন্দের প্ল্যাটফর্মে (কোটলিন বা সুইফট) "অ্যাডিটিভ ম্যানুফ্যাকচারিং টেমপ্লেট" ব্যবহার করে AI থেকে কোডের অনুরোধ করুন। একটি প্রকল্পে জেনারেট করা কোড যোগ করুন, এটি কম্পাইল করুন এবং এই দুটি পরীক্ষা করুন: (1) মূল থ্রেডে নেটওয়ার্ক/দীর্ঘ প্রক্রিয়া চলছে, (2) নাল/ঐচ্ছিক নিরাপত্তা কি সঠিক? একটি ভাষা-নির্দিষ্ট নিরাপত্তা টেমপ্লেটের সাথে আপনি যে সমস্যাটি খুঁজে পান সেটি AI-কে ঠিক করতে দিন।
চেকলিস্ট
- কোড অনুরোধ করার আগে আমি আর্কিটেকচার (MVVM ইত্যাদি) নির্দিষ্ট করেছি
- [ ] আমি এটিকে স্তরে স্তরে ছোট ছোট টুকরোতে চেয়েছিলাম
- [ ] আমি পরীক্ষা করেছি যে সমসাময়িক কোড প্রধান থ্রেড ব্লক করে না
- [ ] আমি নাল/ঐচ্ছিক নিরাপত্তা এবং মেমরি ব্যবস্থাপনা পরীক্ষা করেছি
- [ ] আমি একটি ক্রস-প্ল্যাটফর্ম প্রকল্পে পৃথকভাবে দুটি প্ল্যাটফর্মের অনুমতি/সেটিংস যাচাই করেছি
- [] আমি অফিসিয়াল ডকুমেন্টেশন থেকে লাইব্রেরি সংস্করণ এবং API স্বাক্ষর যাচাই করেছি