পটভূমি: আমি ফাংশনাল প্রোগ্রামিংয়ের প্রবক্তা যিনি একটি ভিবি.এনইটি শপে কাজ করেন যেখানে প্রচলিত মানসিক মডেলটি অত্যাবশ্যক প্রোগ্রামিং। আমাদের সিস্টেমের সেই ভিত্তি হ'ল উইনফর্মস আমি বুঝতে পারি আমরা অপরিহার্য প্রোগ্রামিং থেকে সম্পূর্ণ দূরে সরে যাচ্ছি না, তবে এখনও আমি যেখানেই সম্ভব এফপি (প্রাথমিকভাবে লিনকের মাধ্যমে) ব্যবহার করার চেষ্টা করি কারণ আমি এর গুণাগুণগুলিতে বিশ্বাস করি।
এফপির বিরুদ্ধে তর্ক এবং পাল্টা যুক্তি
কেউ লক্ষ্য করতে পারেন যে সাবলীল লিনক তার অপরিহার্য সমকক্ষের চেয়ে কম দক্ষ যে এই স্টাইলটি একটি ক্রমকে অন্য সিক্যুয়েন্সে নামিয়ে প্রক্রিয়া করে এবং পুনরাবৃত্তি করে। সাধারণত, এটি অত্যাবশ্যক পদ্ধতির চেয়ে আরও কয়েকটি পাস নিতে চলেছে যা ক্রমগুলি পুনরাবৃত্তি পাসগুলি এড়ানোর জন্য আরও অনুকূল করা যেতে পারে। এই কারণে, সীসা বুঝতে পারল না আমি কেন একটি কার্যকরী পদ্ধতিকে বেছে নেব যা স্পষ্টভাবে "কম দক্ষ" is
- পাল্টা যুক্তি : আমি যুক্তি দিয়েছিলাম যে সিপিইউ চক্রের ক্ষেত্রে এটি কখনও কখনও কম দক্ষ হয় বলে আমি অনুভব করেছি যে এটি আরও মানবিক বোধগম্য এবং অনুসরণ করা সহজ, যেহেতু প্রতিটি লাইন অনুক্রমের উপর দিয়ে যাওয়ার সময় কেবল একটি জিনিস করে। আমার কাছে এটি এমন একটি সমাবেশ লাইনের মতো অনুভূত হয় যেখানে তার স্টেশনের প্রত্যেক ব্যক্তির কেবল একটি কাজ করা থাকে। আমি অনুভব করি যে দক্ষতার তুলনায় নগন্য বাণিজ্যটি কোডের মাধ্যমে পুনরায় সংশোধন করা হয়েছে যার উদ্বেগগুলি সুন্দরভাবে পৃথক করা হয়েছে।
আমার দোকানে যে এফপির বিরুদ্ধে আমি শুনি তার পরের যুক্তিটি হ'ল এটি ডিবাগ করা শক্ত - যা সত্য। লিনক কোডের উপরে পদক্ষেপ নেওয়া সহজ নয়। এবং যে সমস্যাগুলি আমি অবিলম্বে চিহ্নিত করতে পারি না তার আরও ভাল অনুসরণ ও বিচ্ছিন্ন করার জন্য আমাকে মাঝে মধ্যে একটি পদ্ধতি শৃঙ্খলা উন্মুক্ত করতে হয়।
- _উত্তর-যুক্তি: বেশিরভাগ ক্ষেত্রে যদিও আমি এটি নিয়ে সমস্যা নেই কারণ আমি মনে করি যে কার্যকরী শৈলীটি কীভাবে এটি পড়তে হবে এবং এটি যখন কার্যকরী শৃঙ্খলে কোনও ত্রুটি নিক্ষেপ করা হয় তখন এটি আরও তাত্ক্ষণিকভাবে চিহ্নিত করতে পারি more
আমার প্রশ্ন
আমি আমাদের দোকানে ক্রিয়ামূলক শৈলীর প্রচার করার চেষ্টা করেছি এবং আমার মনে হয় না যে আমি অগ্রগতি করছি। আমি উভয় স্টাইল প্রোগ্রামিং করেছি এবং সম্প্রতি হাস্কেল-এ ছড়িয়েছি। বহু বছরের অপরিহার্য অভিজ্ঞতা সত্ত্বেও, এখন আমি জাভাস্ক্রিপ্টে এফপি ব্যবহার করছি, এটি আমার উপর বেড়েছে। এটি যখন আমি একটি অত্যাবশ্যক শৈলীতে আটকে থাকি তবে আমি কী করতে পারি তার সাথে এটি তুলনা করার সময় এটি আমার কোষে ন্যায়সঙ্গততার একটি নোট বাজে। আমি আমার মস্তিষ্ককে কার্যকরী রচনার দিকে, কার্যকরী রচনার দিকে পুনরায় প্রশিক্ষণ দিয়েছি।
আমি যেটা বুঝতে পারি না তা হ'ল অন্যকে এফপির যোগ্যতা সম্পর্কে বোঝানো কতটা কঠিন।
উদাহরণস্বরূপ, আমার দোকানের বিকাশকারীরা লিনক ব্যবহার করেন তবে আমি মনে করি তারা সাধারণত এটি ডোমেন ডেটা নিয়ে কাজ করার প্রসঙ্গে ব্যবহার করে। আমি এটিকে আরও সাধারণ অর্থে ব্যবহার করি এবং পছন্দ করি যে কোনও সময় আমি সিকোয়েন্স / তালিকাগুলি বা ক্রমাগত ডেটা স্ট্রাকচারের সাথে কাজ করছি। আমি আমার সতীর্থদের লিনকের ব্যবহার প্রসারিত করতে রাজি করতে পারিনি।
আমি যা বোঝার চেষ্টা করছি তা হ'ল কোন বিকাশকারীকে এফপি পছন্দ করতে পছন্দ করে না।
আমি এমন একজনের কাছ থেকে উত্তর দেখতে চাই যার সাথে এফপির সাথে ভাল অভিজ্ঞতা আছে তবে প্রয়োজনীয় স্টাইলের পক্ষে সিদ্ধান্ত নিয়েছে। ক্রিয়ামূলক ব্যবহারের পরিবর্তে অপরিহার্য সাথে থাকার সিদ্ধান্তকে কী তাড়িয়েছে?
আবশ্যকীয় এবং কার্যকরী প্রোগ্রামিংয়ের মধ্যে পার্থক্য তুলে ধরে এখানে একটি অতিরিক্ত উদাহরণ।
আমি SelectedRows
লিঙ্কে আমাদের গ্রিডের পদ্ধতিটি লিখেছিলাম :
Public Property SelectedRows() As DataRow() Implements IDataSourceControl.SelectedRows
Get
Return Me.ugrBase.Selected.Rows.
OfType(Of Infragistics.Win.UltraWinGrid.UltraGridRow)().
Select(Function(ugr) ugr.ListObject).
OfType(Of DataRowView)().
Select(Function(drv) drv.Row).
ToArray
End Get
তবে কোডের এই স্টাইলটি আমাদের কিছু বিকাশকারীকে অস্বস্তিকর করে তোলে এবং তাই আমাদের নেতৃত্ব আরও পরিচিতদের কাছে এটি আবার লিখে দেয়:
Public Property SelectedRows() As DataRow() Implements IDataSourceControl.SelectedRows
Get
Dim plstRows As New List(Of DataRow)
For Each bugrLoop As Infragistics.Win.UltraWinGrid.UltraGridRow In Me.ugrBase.Selected.Rows
If bugrLoop.ListObject IsNot Nothing Then
plstRows.Add(CType(bugrLoop.ListObject, DataRowView).Row)
End If
Next
Return plstRows.ToArray()
End Get