প্রকল্প লম্বোক ব্যবহার করা কি নিরাপদ? [বন্ধ]


436

যদি আপনি জানেন না প্রকল্প Lombok ভালো জিনিস সঙ্গে জাভার annoyances মধ্যে কয়েকটির সাথে সাহায্য করে getters এবং টীকা সঙ্গে setters উৎপাদিত এবং এমনকি @Data সঙ্গে প্রজন্ম মত সহজ জাভা বিন । এটি আমাকে সত্যিই সহায়তা করতে পারে, বিশেষত 50 টি ভিন্ন ইভেন্টের অবজেক্টগুলিতে যেখানে আপনার 7 টি পর্যন্ত আলাদা ক্ষেত্র রয়েছে যা নির্মাণকারীদের সাথে লুকিয়ে রাখা দরকার। আমি এটি দিয়ে কোডের প্রায় এক হাজার লাইনের সরিয়ে ফেলতে পারি।

তবে, আমি উদ্বিগ্ন যে দীর্ঘকালীন সময়ে, এটি একটি আক্ষেপের সিদ্ধান্ত হবে be ##Java Freenodeচ্যানেলটিতে ফ্লেমওয়ার্স ফেটে যাবে যখন আমি এটির উল্লেখ করব, কোড স্নিপেটগুলি প্রদান করা সম্ভব সাহায্যকারীদের বিভ্রান্ত করবে , লোকে জাভাডক নিখোঁজ হওয়ার বিষয়ে অভিযোগ করবে এবং ভবিষ্যতের প্রতিশ্রুতিবদ্ধরা কেবল এটিকে সব সরিয়ে ফেলবে। আমি সত্যিই ইতিবাচকটি উপভোগ করব তবে আমি নেতিবাচক সম্পর্কে উদ্বিগ্ন।

সুতরাং: ছোট বা বড় কোনও প্রকল্পে লম্বোক ব্যবহার করা কি নিরাপদ? ইতিবাচক প্রভাব কি নেতিবাচক মূল্য?


5
Jdk9 সংকলক সমর্থন যোগ করুন # 985 আমার মন্তব্যের সময় অমীমাংসিত। জাভা 9 প্যাকেজ সিস্টেম CLI বিকল্প অনেক জোড়ার প্রয়োজন javacঅভ্যন্তরীণ খোলা অ্যাক্সেস করার জন্য sun.*ক্লাস ((
gavenkoa

1
হতে পারে ইন্টারেস্ট্যান্ট: মাঝারি.com/@gabor.liptak/…
গ্যাবার লিপটিক

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

উত্তর:


181

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

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

আপনি এই সম্ভাব্য সমস্যাগুলি উল্লেখ করেছেন:

আমি যখন এটির উল্লেখ করব তখন ## জাভা ফ্রিনোড চ্যানেলে ফ্লেমওয়ারগুলি ফেটে যাবে will

সহজ। ফ্লেয়ারওয়ারগুলিতে উপেক্ষা করুন / অংশ নেবেন না, বা কেবল লম্বোকের উল্লেখ করা থেকে বিরত থাকুন।

কোড স্নিপেট সরবরাহ করা সম্ভাব্য সহায়কদের বিভ্রান্ত করবে,

যদি প্রকল্প কৌশলটি লম্বোক ব্যবহার করতে হয় তবে সম্ভাব্য সহায়কদের এটির অভ্যস্ত হওয়া দরকার।

লোকেরা জাভাদোক নিখোঁজ হওয়ার বিষয়ে অভিযোগ করবে,

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

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

এবং ভবিষ্যতের প্রতিশ্রুতিবদ্ধরা কেবল এটি যেভাবেই সরিয়ে ফেলতে পারে।

তা চালু নেই! যদি সম্মত প্রকল্পের কৌশলটি লম্বোককে ব্যবহার করতে হয়, তবে যে প্রতিশ্রুতিবদ্ধ লোকরা কৃতজ্ঞভাবে কোডটি ডি-লম্বককে শাস্তি দেওয়া উচিত এবং প্রয়োজনে তাদের প্রতিশ্রুতিবদ্ধ অধিকারগুলি প্রত্যাহার করা উচিত।

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


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

177
আমি বলতে চাই যে শিমের গেট / সেটারদের জাভাদোক ভালের চেয়ে বেশি ক্ষতি করে। এই পদ্ধতিগুলি একটি ভালভাবে বোঝা কনভেনশন অনুসরণ করে যা জাভাদকে যুক্ত করার প্রয়োজন হয় না; যে শুধু গোলমাল যোগ করে। গ্রাহকরা এবং সেটারগুলিতে কেবলমাত্র ডকুমেন্টেশন যুক্ত করুন যখন তারা কোনও অপ্রত্যাশিত কিছু করেন যখন তাদের পার্শ্ব প্রতিক্রিয়া হয়।
গ্যারিএফ

9
আমি কেবল বুঝতে পেরেছি যে জাভাডোক মন্তব্যটি সম্ভবত এই বিষয়টি উল্লেখ করতে পারে যে আপনি যদি আপনার লম্বাকৃত কোডের জন্য জাভাডোক তৈরি করেন তবে গ্রাহকরা এবং সেটটারগুলি একেবারে দেখায় না। এটি ঠিক করার উপায়টি হ'ল আপনার ডেলম্বোকেড কোডের উপরে জাভাদোক চালানো।
রোল স্পিলকার

14
@ গ্যারিএফ সত্যই? মান নাল হতে পারে কিনা তা দলিল করার বিষয়ে কীভাবে? বা একটি সংখ্যাসূচক মানের জন্য অনুমোদিত পরিসীমা? অথবা অনুমতিযুক্ত দৈর্ঘ্য এবং / বা একটি স্ট্রিং মানের বিন্যাস? অথবা একটি স্ট্রিং মান একটি শেষ ব্যবহারকারীর কাছে উপস্থাপনের জন্য উপযুক্ত কিনা? অথবা সম্পত্তির প্রকৃত অর্থ কী তা নথিভুক্ত করা, যখন এর নাম সম্ভবত এটি পুরোপুরি ব্যাখ্যা করতে পারে না? ( JList.getLayoutOrientation এবং JList.setLayoutOrientation মাথায় আসে))
ভিজিআর

21
@ ভিজিআর আপনি সাধারণভাবে যা বলছেন তাতে আমি একমত, তবে সেই নির্দিষ্ট ক্ষেত্রে আরও ভাল সমাধান হ'ল নামকরণ করা, মন্তব্য নয়। অর্থাত getCreationDate, getDueDate। নামকরণ ট্রাম্প মন্তব্যগুলি যেখানে সম্ভব সম্ভব।
গ্যারিএফ

850

আজই লম্বোক ব্যবহার শুরু করেছেন started এখন পর্যন্ত আমি এটি পছন্দ করি তবে একটি অপূর্ণতা যা আমি উল্লেখ করে দেখিনি তা হ'ল সমর্থনকে পুনরুদ্ধার করা।

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

আমি কল্পনা করব এটি লম্বোকের মাধ্যমে নয় একটি আইডিই প্লাগ-ইনের মাধ্যমে করতে হবে।

আপডেট (জানুয়ারী 22 '13)
3 মাস ধরে লম্বোক ব্যবহার করার পরেও আমি বেশিরভাগ প্রকল্পের জন্য এটির প্রস্তাব দিই। তবে আমি অন্য একটি অপূর্ণতা পেয়েছি যা উপরের তালিকাভুক্তটির মতো।

আপনার যদি কোনও ক্লাস থাকে তবে MyCompoundObject.javaতার 2 জন সদস্য রয়েছে বলে মন্তব্য করুন @Delegate, বলুন myWidgetsএবং myGadgetsযখন আপনি myCompoundObject.getThingies()অন্য ক্লাসের পক্ষ থেকে কল করেন তখন এটি অ্যাসিপ্রেটিভড কিনা তা জানা অসম্ভব Widgetবা Gadgetকারণ আপনি আর আইডিই-র উত্সে যেতে পারবেন না।

Eclipse "ডেলিগেট পদ্ধতি উত্পন্ন করুন ..." ব্যবহার করে আপনাকে একই কার্যকারিতা সরবরাহ করা হয়, ঠিক তত দ্রুত এবং উত্স জাম্পিং সরবরাহ করে। খারাপ দিকটি হ'ল এটি আপনার উত্সকে বয়লারপ্লেট কোড দিয়ে বিশৃঙ্খলা করে যা গুরুত্বপূর্ণ বিষয়টিকে ফোকাস করে।

আপডেট 2 (ফেব্রুয়ারী 26 '13)
5 মাস পরে, আমরা এখনও লম্বোক ব্যবহার করছি, তবে আমার আরও কিছু বিরক্তি রয়েছে। আপনি যখন নতুন কোডের সাথে নিজেকে পরিচিত করার চেষ্টা করছেন তখন ঘোষিত গেটর এবং সেটটারের অভাব বিরক্তিকর হয়ে উঠতে পারে।

উদাহরণস্বরূপ, যদি আমি একটি পদ্ধতি দেখি getDynamicCols()তবে এটি কী সম্পর্কে আমি জানি না তবে এই পদ্ধতির উদ্দেশ্য নির্ধারণ করতে আমার কিছু অতিরিক্ত বাধা আছে। কিছু বাধা লম্বোক, কিছু লম্বোক স্মার্ট প্লাগইনের অভাব। বাধা অন্তর্ভুক্ত:

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

আপডেট 3 (মার্চ 7 '13)
আমি অনুমান করি যে গ্রহদে জিনিসগুলি করার বিভিন্ন পদ্ধতি ব্যবহার করা শিখছি। আপনি আসলে একটি লম্বোক জেনারেট পদ্ধতিতে একটি শর্তাধীন ব্রেকপয়েন্ট (বিপি) সেট করতে পারেন। Outlineদৃশ্যটি ব্যবহার করে , আপনি পদ্ধতিটিতে ডান-ক্লিক করতে পারেন Toggle Method Breakpoint। তারপরে আপনি যখন বি.পি.কে আঘাত করেন, আপনি Variablesউত্পন্ন পদ্ধতিটি প্যারামিটারগুলি কী বলে নামকরণ (সাধারণত ক্ষেত্রের নাম হিসাবে একই) এবং শেষ পর্যন্ত, Breakpointsভিপিটিকে ডান ক্লিক করুন এবং Breakpoint Properties...একটি শর্ত যুক্ত করতে নির্বাচন করতে ডিবাগিং ভিউটি ব্যবহার করতে পারেন । খুশী হলাম।

আপডেট 4 (আগস্ট 16 '13)
আপনি আপনার মাভেন পোমে আপনার লম্বোকের নির্ভরতা আপডেট করার সময় নেটবিনগুলি এটি পছন্দ করে না। প্রকল্পটি এখনও সংকলন করে তবে ফাইলগুলি সংকলনের ত্রুটি থাকার জন্য পতাকাঙ্কিত হয় কারণ এটি লম্বোক যে পদ্ধতিগুলি তৈরি করছে তা দেখতে পাচ্ছে না। নেটবিন্স ক্যাশে সাফ করা বিষয়টি সমাধান করে। গ্রহণের মতো "ক্লিন প্রকল্প" বিকল্প আছে কিনা তা নিশ্চিত নন। গৌণ সমস্যা, তবে এটি জানাতে চেয়েছিল।

আপডেট 5 (জানুয়ারী 17 '14)
লম্বোক সবসময় গ্রোভির সাথে বা কমপক্ষে খেলেন না groovy-eclipse-compiler। আপনার সংকলকটির সংস্করণটি ডাউনগ্রেড করতে হতে পারে। মাভেন গ্রোভী এবং জাভা + লম্বোক

আপডেট 6 (জুন 26 '14)
একটি সতর্কতার শব্দ। লম্বোক সামান্য আসক্তিযুক্ত এবং যদি আপনি এমন কোনও প্রকল্পে কাজ করেন যেখানে আপনি কোনও কারণে এটি ব্যবহার করতে পারবেন না, তবে এটি আপনার থেকে প্রসেসকে বিরক্ত করবে। আপনি এটিকে কখনই ব্যবহার না করা ভাল।

আপডেট 7 (জুলাই 23 '14)
কারণ এটি সরাসরি ঠিকানাগুলি এটি একটি মজার আপডেট একটি বিট নিরাপত্তা Lombok অবলম্বন যে ওপি সম্পর্কে জিজ্ঞাসা।

V1.14 হিসাবে, টীকাকে @Delegateপরীক্ষামূলক স্থিতিতে নামানো হয়েছে। বিশদগুলি তাদের সাইটে নথিভুক্ত করা হয়েছে ( লম্বোক ডেলিগেট ডক্স )।

জিনিসটি হ'ল, আপনি যদি এই বৈশিষ্ট্যটি ব্যবহার করছিলেন তবে আপনার ব্যাকআউট বিকল্পগুলি সীমিত। আমি বিকল্পগুলি দেখতে পাচ্ছি:

  • ম্যানুয়ালি @Delegateটীকাগুলি সরান এবং প্রতিনিধি কোডটি হ্যান্ডকোড উত্পন্ন / হ্যান্ডকোড করুন। আপনি যদি টীকাতে কিছু বৈশিষ্ট্য ব্যবহার করে থাকেন তবে এটি কিছুটা শক্ত।
  • ডেলোমবোক যে ফাইলগুলিতে @Delegateটিকা আছে এবং সম্ভবত আপনি যে টীকাগুলি চান তা আবার যুক্ত করতে পারে।
  • লম্বোককে কখনই আপডেট করবেন না বা কাঁটাচামড়া বজায় রাখবেন না (বা পরীক্ষামূলক বৈশিষ্ট্যগুলি ব্যবহার করে লাইভ করুন)।
  • আপনার পুরো প্রকল্পটি ডেলম্বোক করুন এবং লোমবোক ব্যবহার বন্ধ করুন।

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

আপডেট 8 (20 অক্টোবর '14)
যদি এটি আপনার পক্ষে বিকল্প হয় তবে গ্রোভি লম্বোকের একই সুবিধাগুলির বেশিরভাগ অংশীদার হন , পাশাপাশি @ ডেলিগেট সহ অন্যান্য বৈশিষ্ট্যগুলির একটি নৌকা বোঝাই সরবরাহ করে । আপনি যদি ভাবেন যে আপনার কাছে যে শক্তিগুলি রয়েছে সেগুলির কাছে ধারণাটি বিক্রি করতে খুব কঠিন সময় আসবে, তবে এটি আপনার কারণকে সহায়তা করতে পারে কিনা তা দেখুন @CompileStaticবা @TypeCheckedটীকাটি দেখুন। আসলে, গ্রোভি ২.০ প্রকাশের প্রাথমিক ফোকাসটি ছিল স্থিতিশীল সুরক্ষা

আপডেট 9 (সেপ্টেম্বর 1 '15)
লম্বোক এখনও সক্রিয়ভাবে রক্ষণাবেক্ষণ এবং উন্নত করা হচ্ছে , যা গ্রহণের সুরক্ষা স্তরে খুব ভাল odes @Builder টীকা আমার প্রিয় নতুন বৈশিষ্ট্য অন্যতম।

আপডেট 10 (নভেম্বর 17 '15)
এটি সম্ভবত ওপি-র প্রশ্নের সাথে সম্পর্কিত না বলে মনে হচ্ছে, তবে ভাগ করে নেওয়া উপযুক্ত। আপনি যদি লিখে থাকেন এমন বয়লারপ্লেট কোডের পরিমাণ হ্রাস করতে সহায়তার জন্য যদি আপনি সরঞ্জামগুলির সন্ধান করেন তবে আপনি গুগল অটো - বিশেষ অটোভ্যালুতেও দেখতে পারেন । যদি আপনি তাদের স্লাইড ডেকটি দেখেন তবে লোম্বোককে তারা যে সমস্যার সমাধান করার চেষ্টা করছেন তার সম্ভাব্য সমাধান হিসাবে তালিকাবদ্ধ করুন। লম্বোকের জন্য তারা যে কনসগুলির তালিকা করে তা হ'ল:

  • সন্নিবেশিত কোডটি অদৃশ্য (এটি যে পদ্ধতিগুলি তৈরি করে সেগুলি আপনি "দেখতে" পারবেন না) [সম্পাদনা দ্রষ্টব্য - আসলে আপনি এটি করতে পারেন তবে এটির জন্য কেবল একটি ডিসকম্পেলার প্রয়োজন]
  • সংকলক হ্যাকগুলি মানহীন এবং ভঙ্গুর
  • "আমাদের দৃষ্টিতে, আপনার কোডটি আর সত্যিই জাভা নয়"

আমি তাদের মূল্যায়নের সাথে কতটা সম্মত তা নিশ্চিত নই। এবং স্লাইডগুলিতে নথিভুক্ত অটওয়ালুয়ের বিভক্তি দেওয়া, আমি লম্বোকের সাথে আঁকড়ে থাকব (যদি গ্রোভির বিকল্প না হয়)।

আপডেট 11 (ফেব্রুয়ারী 8 '16)
আমি খুঁজে পেলাম স্প্রিং রুতে কিছু অনুরূপ মন্তব্য রয়েছে । আমি এখনও অবাক হয়ে কিছুটা জানতে পেরেছিলাম যে রূ এখনও একটি জিনিস এবং টীকাগুলির জন্য ডকুমেন্টেশন সন্ধান করা কিছুটা রুক্ষ। অপসারণ ডি-লম্বকের মতো সহজ দেখায় না। Lombok নিরাপদ পছন্দ মত মনে হচ্ছে।

আপডেট 12 (ফেব্রুয়ারী 17 '16)
আমি বর্তমানে যে প্রকল্পে কাজ করছি তার জন্য লম্বোক কেন আনাই নিরাপদ তা নিয়ে ন্যায্যতা নিয়ে আসার চেষ্টা করার সময়, আমি একটি সোনার টুকরো পেয়েছি যা এতে যুক্ত হয়েছিল v1.14- কনফিগারেশন সিস্টেম ! এর অর্থ হল যে আপনি আপনার টিমটি অনিরাপদ বা অনাকাঙ্ক্ষিত বলে মনে করেন এমন কিছু বৈশিষ্ট্যগুলি অ-মঞ্জুর করার জন্য একটি প্রকল্পটি কনফিগার করতে পারেন। আরও ভাল, এটি বিভিন্ন সেটিংস সহ ডিরেক্টরি নির্দিষ্ট কনফিগারেশনও তৈরি করতে পারে। এটা সত্যিই দারুন.

আপডেট 13 (4 অক্টোবর '16)
যদি এই ধরণের জিনিস আপনার কাছে আসে তবে অলিভার গিয়ের মনে করেছিলেন যে লম্বককে স্প্রিং ডেটা রেস্টে যুক্ত করা নিরাপদ ।

14 আপডেট (26 সেপ্টেম্বর '17) ওপিএস প্রশ্নের মন্তব্যে @ গাভেনকোয়ার
দ্বারা নির্দেশিত হিসাবে , জেডিকে 9 সংকলক সমর্থন এখনও উপলভ্য নয় (ইস্যু # 985)। এটিও মনে হচ্ছে এটি লম্বোক দলের পক্ষে আশেপাশের পক্ষে সহজ সমাধান হয়ে উঠবে না।

আপডেট 15 (মার্চ 26 '18)
লম্বোক চেঞ্জলগটি v1.16.20 অনুসারে ইঙ্গিত করে " JDK1.9 এ লোম্বোক সংকলন এখন সম্ভব " যদিও # 985 এখনও খোলা আছে।

জেডিকে 9 সংযুক্ত করার পরিবর্তনগুলি অবশ্য কিছু ব্রেকিং পরিবর্তন প্রয়োজন; সমস্ত কনফিগার ডিফল্ট পরিবর্তন বিচ্ছিন্ন। তারা সামান্য পরিবর্তন এনেছে, তবে সংস্করণটি "বর্ধনশীল" সংস্করণ নম্বরটিকে (v1.16.18 থেকে v1.16.20 এ যাচ্ছে) কেবলই ঠাঁই করেছে। যেহেতু এই পোস্টটি সুরক্ষার বিষয়ে ছিল, আপনার যদি এমন একটি yarn/npmবিল্ড সিস্টেম থাকে যা স্বয়ংক্রিয়ভাবে সর্বশেষতম ইনক্রিমেন্টাল সংস্করণে আপগ্রেড হয়ে থাকে তবে আপনি অভদ্র জাগরণের পক্ষে থাকতে পারেন।

আপডেটের 16 (জানুয়ারী 9 '19)

দেখে মনে হচ্ছে জেডিকে 9 সমস্যাগুলি সমাধান হয়ে গেছে এবং লম্বোক জেডিকে 10 এবং এমনকি জেডিকে 11 এর সাথে কাজ করে যা আমি বলতে পারি।

সুরক্ষার দিক থেকে যে বিষয়টি আমি লক্ষ্য করেছি তা হ'ল এই যে পরিবর্তনের লগটি v1.18.2 থেকে v1.18.4 এ যাওয়ার জন্য দুটি আইটেমকে তালিকাবদ্ধ করে BREAKING CHANGE!? আমি নিশ্চিত নই সেমভার "প্যাচ" আপডেটে কীভাবে ব্রেকিং পরিবর্তন ঘটে। আপনি যদি এমন কোনও সরঞ্জাম ব্যবহার করেন যা প্যাচ সংস্করণগুলিকে স্বয়ংক্রিয়ভাবে আপডেট করে।


49
ধন্যবাদ আমি মনে করি যে এই তথ্যটি ওপি সত্যই দার্শনিক প্রতিক্রিয়ার বিপরীতে চেয়েছিল।
অধ্যায় বিশিষ্ট

14
UPDATE 6অনেকটা
স্কেলার

5
@ মমহিজ এবং গ্রোভী আমার যদি এমন কোনও জায়গায় কাজ করতে হয় যেখানে আমি কমপক্ষে পরীক্ষার জন্য গ্রোভী বা স্কালা ব্যবহার করতে না পারি তবে আমি খুব অল্প সময়ের মধ্যেই ছাড়তাম।
স্নেকস

8
সময়ের স্টাইলের প্রতিক্রিয়া অনুসারে আমি আপনার আপডেটগুলি সত্যিই পছন্দ করি। বিশেষত এই শৈলীর একটি প্রশ্ন / প্রতিক্রিয়ার জন্য এটি সত্যই সহায়তা করে।
ম্যাটজি

4
দেখে মনে হচ্ছে জাভা 9 সমর্থন এখন উপলব্ধ। আপনি আপনার উত্তর আপডেট করতে পারেন। stackoverflow.com/questions/41520511/...
leventunver

115

এগিয়ে যান এবং লম্বোক ব্যবহার করুন, আপনি যদি প্রয়োজন পরে আপনার কোডটি "ডেলম্বোক" করতে পারেন তবে http://projectlombok.org/features/delombok.html


5
@ ফ্রেডকোডেজাভা যখন আপনি "x + এর জন্য" বলছেন, x একমাত্র এবং একমাত্র বিন্দুতে তালিকাভুক্ত পয়েন্টগুলির মধ্যে একটি হওয়া উচিত :)
কেরেম বায়ডোয়ান

7
এই বিশেষ পরিস্থিতিতে আমি "+1 ডেলম্বোকের জন্য" "দীর্ঘ লাইভ ডেলম্বোক" হিসাবে ব্যাখ্যা করেছি। আমি এটা পছন্দ করি.
জোল্টন

1
"ডেলোবোকের জন্য +1" - বিশেষত সত্য যখন আপনি আপনার ক্লায়েন্টদের সরবরাহ করা হবে এমন প্রকল্পগুলিতে লম্বোক ব্যবহার করতে চান। আপনি লম্বকের সব সুবিধা নিতে পারেন এবং আপনার ক্লায়েন্টকে লম্বোক নির্ভরতা ছাড়াই একটি পরিষ্কার জার দেখতে দিন।
fwonce

লোকেরা "ঠিক আছে, ভাবতে ভাবতে আমি লম্বোককে একবার চেষ্টা করে দেখব, আর যদি আমি এটি পছন্দ না করি তবে আমি কেবল ডেলম্বোক": দুবার ভাবুন। ডেলম্বোক চালানো একটি বেদনাদায়ক প্রক্রিয়া। এবং ফলস্বরূপ কোডটি লম্বোকের মতোই কাজ করবে ... তবে এটি একটি সম্পূর্ণ জগাখিচুড়িও হবে।
এজেপিরেজ

75

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

ব্যবহার করার সময়

@EqualsAndHashCode(callSuper = false, of = { "field1", "field2", "field3" })

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

@ToStringটীকাগুলি এবং এর পরামিতিগুলির ক্ষেত্রে এটি একইভাবে অন্তর্ভুক্ত / বর্জনিত ক্ষেত্রগুলি সম্পর্কে, গ্রাহকদের ব্যবহার বা ক্ষেত্রের অ্যাক্সেস এবং ওয়েথার বা কল না করার বিষয়ে কাঙ্ক্ষিত আচরণকে স্পষ্টভাবে যোগাযোগ করে super.toString()

এবং আবার @Getterবা @Setter(AccessLevel.NONE)(এবং বিকল্পভাবে যে কোনও বিবিধ পদ্ধতিতে ওভাররাইড করে) দিয়ে একটি সম্পূর্ণ শ্রেণি বর্ননা করে তা অবিলম্বে পরিষ্কার হয়ে গেছে যে ক্ষেত্রগুলির জন্য কী পদ্ধতিগুলি উপলভ্য হবে।

সুবিধাগুলি এবং চলতে থাকে ..

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


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

25

লম্বোক দুর্দান্ত, কিন্তু ...

লম্বোক টীকা প্রক্রিয়াকরণের নিয়মগুলি ভঙ্গ করে, এতে এটি নতুন উত্স ফাইল তৈরি করে না। এর অর্থ যদি তারা গ্রাহকরা / সেটটারগুলি বা অন্য যে কোনও কিছুর উপস্থিতি প্রত্যাশা করে তবে এটিকে অন্য টিকা প্রসেসরের সাথে ব্যবহার করা যায় না can

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

লম্বোক এবং ম্যাপস্ট্রাক্ট উভয়ের সাথেই কাজ করার জন্য আমি শেষ পর্যন্ত একটি বিল্ড স্ক্রিপ্ট হ্যাক করেছি। তবে কমপক্ষে এই প্রকল্পে - এটি কতটা হ্যাকির কারণে আমি লম্বোককে ফেলে দিতে চাই। আমি লম্বোক সব সময় অন্যান্য জিনিস ব্যবহার করি।


22

আমি লম্বোক সম্পর্কে কিছু মতামত পড়েছি এবং আসলে আমি এটি কয়েকটি প্রকল্পে ব্যবহার করছি।

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

আমার এইভাবে চিন্তা করার কারণগুলি:

  • আইডিই প্লাগইন নির্ভরতা । লম্বোকের জন্য আইডিই সমর্থন প্লাগইনগুলির মাধ্যমে। এমনকি বেশিরভাগ সময় ভাল কাজ করা, ভবিষ্যতে আইডিই এবং এমনকি ভাষা সংস্করণে (জাভা 10+ ভাষার বিকাশকে ত্বরান্বিত করবে) আপনি এই প্লাগইনগুলি থেকে সর্বদা জিম্মি হয়ে থাকবেন । উদাহরণস্বরূপ, আমি ইন্টেলিজ আইডিইএ 2017.3 থেকে 2018.1 থেকে আপডেট করার চেষ্টা করেছি এবং আমি এটি করতে পারিনি কারণ আসল লম্বক প্লাগইন সংস্করণে কিছু সমস্যা ছিল এবং আমার প্লাগইনটি আপডেট হওয়ার অপেক্ষার দরকার ছিল ... আপনি যদি সমস্যা হয় তবে এমন আরও একটি বিকল্প আইডিই ব্যবহার করতে চান যাতে কোনও লম্বোক প্লাগইন সমর্থন না করে।
  • 'ব্যবহারগুলি অনুসন্ধান করুন' সমস্যা। । লম্বোক ব্যবহার করে আপনি উত্পন্ন গেটর, সেটার, কনস্ট্রাক্টর, বিল্ডার পদ্ধতিগুলি ইত্যাদি দেখতে পাচ্ছেন না তাই আপনি যদি আপনার আইডিই দ্বারা আপনার প্রকল্পে এই পদ্ধতিগুলি কোথায় ব্যবহার করা হচ্ছে তা সন্ধান করার পরিকল্পনা করছেন, আপনি কেবল এটি খুঁজছেন তা করতে পারবেন না এই গোপন পদ্ধতিগুলির মালিক শ্রেণীর জন্য।
  • এত সহজে যে বিকাশকারীরা এনক্যাপসুলেশন ভাঙতে যত্নবান হন না । আমি জানি যে এটি লম্বোকের আসলেই সমস্যা নয়। তবে আমি কী পদ্ধতিগুলি দৃশ্যমান হওয়া দরকার এবং কী তা অপরিবর্তিত করা উচিত তা আর নিয়ন্ত্রণ না করার জন্য বিকাশকারীদের কাছ থেকে একটি বৃহত প্রবণতা দেখেছি। সুতরাং, অনেক সময় তারা @Getter @Setter @Builder @AllArgsConstructor @NoArgsConstructorক্লাসটি কী কী পদ্ধতিতে উদ্ভাসিত হওয়া দরকার তা চিন্তা করেই কেবল টীকাগুলি অনুলিপি করে এবং কপি করে চলেছে।
  • বিল্ডার অবসেশন ©। আমি এই নামটি আবিষ্কার করেছি (ছাড়ুন, মার্টিন ফাউলার)) কৌতুক আলাদা, একটি বিল্ডার তৈরি করা এত সহজ যে কোনও শ্রেণীর কাছে মাত্র দুটি পরামিতি থাকলেও বিকাশকারীরা @Builderকনস্ট্রাক্টর বা স্থিতিশীল কনস্ট্রাক্টর পদ্ধতির পরিবর্তে ব্যবহার করতে পছন্দ করেন । কখনও কখনও তারা এমনকি লম্বক বিল্ডারের অভ্যন্তরে একটি বিল্ডার তৈরি করার চেষ্টা করে, এর মতো অদ্ভুত পরিস্থিতি তৈরি করে MyClass.builder().name("Name").build().create()
  • রিফ্যাক্টর করার সময় বাধা । উদাহরণস্বরূপ, আপনি যদি ব্যবহারকারীর @AllArgsConstructorউপরে আরও একটি প্যারামিটার যুক্ত করতে চান এবং আইডিই আপনাকে ক্লাসটি ইনস্ট্যান্ট করছে এমন সমস্ত জায়গায় (বেশিরভাগ, পরীক্ষা) এই অতিরিক্ত পরামিতি যুক্ত করতে সহায়তা করতে পারে না।
  • কংক্রিট পদ্ধতিতে লোমবোকের মিশ্রণ । আপনি গিটার / সেটার / ইত্যাদি তৈরি করতে সমস্ত পরিস্থিতিতে লম্বোক ব্যবহার করতে পারবেন না। সুতরাং, আপনি এই দুটি পদ্ধতির আপনার কোডে মিশ্র দেখতে পাবেন। আপনি কিছু সময় পরে এটি অভ্যস্ত হয়ে উঠেন তবে ভাষাটি হ্যাকের মতো অনুভব করেন।

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


8
আমি বলব কোটলিন যাব বা প্লে জাভা দিয়ে থাকি। জাভা কোডটি টাইপ না করে আপনি সাশ্রয়ের চেয়ে লম্বক ইস্যু ঘুরে আরও বেশি সময় ব্যয় করতে পারেন।
jediz

1
যে ব্যক্তি কেবলমাত্র ভার্বোসটির কারণে জাভা ঘৃণা করে সে তার কোডটি কম ভার্বোস না করার জন্য তার দোষ ...
নিকোলাস

17

পাশাপাশি দীর্ঘমেয়াদী রক্ষণাবেক্ষণের ঝুঁকিও রয়েছে। প্রথমে, আমি লোমবক আসলে কীভাবে কাজ করে সে সম্পর্কে পড়ার পরামর্শ দেব, উদাহরণস্বরূপ এখানে এর বিকাশকারীদের কাছ থেকে কিছু উত্তর ।

অফিসিয়াল সাইটে রেইনিয়ার জুইটসারলোটের এই উক্তি সহ ডাউনসাইডগুলির একটি তালিকা রয়েছে :

এটি মোট হ্যাক। নন-পাবলিক এপিআই ব্যবহার করে। অহঙ্কারকারী castালাই (জ্যাকটি জেনে চলেছে যে কোনও এনোটেশন প্রসেসর জাভাক অ্যানোটেশন প্রসেসরের একটি উদাহরণ পাবে, যা এনোটেশনপ্রসেসরের অভ্যন্তরীণ বাস্তবায়ন (একটি ইন্টারফেস), যা লাইভ এএসটি-তে পেতে বেশ কয়েকটি অতিরিক্ত পদ্ধতি ব্যবহার করতে দেখা যায়) ।

গ্রহের উপর, এটি তর্কযোগ্যতর খারাপ (এবং আরও বেশি শক্তিশালী) - একটি জাভা এজেন্ট কোডটি গ্রহন ব্যাকরণ এবং পার্সার শ্রেণিতে কোড ইনজেকশনের জন্য ব্যবহার করা হয়, এটি অবশ্যই সম্পূর্ণ অ-পাবলিক এপিআই এবং সম্পূর্ণ সীমা ছাড়াই off

আপনি যদি লম্বোক স্ট্যান্ডার্ড এপিআই দিয়ে যা করতে পারেন তা করতে পারতাম, তবে আমি এটি সেভাবে করতাম তবে আপনি পারবেন না। তবুও, এর মূল্যটি কীভাবে, আমি জাভা ১.6-তে চলমান গ্রহন v3.5 এর জন্য গ্রহন প্লাগইনটি বিকাশ করেছি এবং কোনও পরিবর্তন না করেই এটি জাভা ১.৩ এ চলমান গ্রহীতা v3.4-তেও কাজ করেছে, সুতরাং এটি সম্পূর্ণ নাজুক নয়।

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


8
ঠিক আছে, আপনি যদি লম্বোককে আর ব্যবহার করতে না পারেন তবে ডেলম্বক চালান এবং এটিকে ছাড়াই বিকাশ চালিয়ে যান।
ভ্লাদিচ

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

15

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

আপনার প্রশ্নে: আপনার বিকাশকারীদের স্কালার চেয়ে লম্বোকের চেষ্টা করা অবশ্যই সহজ। এটি ব্যবহার করে দেখুন এবং তারা যদি এটি পছন্দ করে তবে স্কালা চেষ্টা করুন।

যেমন একটি অস্বীকৃতি: আমি জাভাও পছন্দ করি!


আমি স্কালা এবং লম্বোককে পছন্দ করি তবে আপনি কোন ধারণার কথা বলছেন তা আমি দেখতে পাচ্ছি না। \ @ স্নেকিথ্রোস, \ @ ডেটা, ...?
sinuhepop

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


15

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


27
আপনি মাথা ব্যাথা বিস্তারিত বলতে পারেন?
কেভিন ওয়েলকার

2
Eclipse এর সেটআপটি অত্যন্ত সোজা। সবে "জাভা -জার লম্বোক.জার"।

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

@Snekse। আমি জানি না ঠিক কোন লম্বোক প্লাগইন সংস্করণটি ইন্টেলিজ আইডিয়া নোটিফিকেশন এবং পরামর্শ চালু করেছে (একটি লাল বার্তা এবং পরামর্শ ত্রুটি লগটিতে পপ আপ করে ব্যবহারকারীকে টীকাটি সক্ষম করতে অনুরোধ জানায় এবং এমনকি কনফিগারেশন বিভাগে লিঙ্কটি সরবরাহ করেছিল), তবে আইডিয়া 2016.3 এবং 0.13.16 প্লাগইন সংস্করণে এই দরকারী সমর্থনটি রয়েছে।
jtonic

2
লম্বোক আইডিয়া প্লাগইন (আমি সংস্করণ 0.13.16 ব্যবহার করি) সম্প্রতি এনটোটেশন প্রসেসরটি কনফিগার করা হয়নি এমন ব্যবহারকারীকে অবহিত করার জন্য সমর্থনটি প্রবর্তন করে এবং অ্যাপটিকে সক্ষম করতে কনফিগারেশন সেটিংস বিভাগে একটি লিঙ্ক সরবরাহ করে। স্ক্রিনশট এ দেখুন। postimg.org/image/5tm2zzvkh
jtonic

11

আমি যখন আমার দলকে এই প্রকল্পটি দেখিয়েছিলাম তখন উত্সাহ বেশি ছিল, তাই আমি মনে করি আপনার টিমের প্রতিক্রিয়া থেকে ভয় পাওয়া উচিত নয়।

  • আরওআই হিসাবে এটি একীভূত করার জন্য একটি স্ন্যাপ এবং এর মূল আকারে কোনও কোড পরিবর্তন প্রয়োজন requires (কেবলমাত্র আপনার ক্লাসে একটি টীকা যুক্ত করা)

  • এবং সর্বশেষে, আপনি যদি নিজের মতামত পরিবর্তন করেন, আপনি আনলম্বক চালাতে পারেন, বা আপনার আইডিই এই সেটার, গেটার এবং সিটার তৈরি করতে দিন (যা আমি মনে করি যে তারা আপনার পোজো কতটা পরিষ্কার হয়ে গেছে তা একবার দেখে কেউ জিজ্ঞাসা করবে না)


10

আমার লম্বোকের প্রতিযোগিতাটি হ'ল এটি কেবল বোলারপ্লিট জাভা কোড লেখার জন্য শর্টকাট সরবরাহ করে।
যখন বোলারপ্ল্যাট জাভা কোড লেখার জন্য শর্টকাটগুলি ব্যবহার করার কথা আসে তখন আমি আইডিই সরবরাহ করে এমন বৈশিষ্ট্যগুলির উপর নির্ভর করতাম - যেমন ইক্লিপসের মতো, আমরা মেনু উত্স> জেটর এবং সেটেটর উত্পন্ন করার জন্য জেনারেটস এবং সেটার তৈরি করতে পারি।
আমি এর জন্য লম্বোকের মতো লাইব্রেরিতে নির্ভর করব না:

  1. এটি বিকল্প সিনট্যাক্সের ইন্ডিরিশন লেয়ার সহ আপনার কোডকে দূষিত করে (পড়ুন @Getter,@Setter ইত্যাদি টীকা)। জাভা জন্য বিকল্প বাক্য গঠন শিখার পরিবর্তে, আমি অন্য কোনও ভাষাতে স্যুইচ করব যা স্থানীয়ভাবে লম্বককে সিনট্যাক্সের মতো সরবরাহ করে।
  2. আপনার কোডটি নিয়ে কাজ করতে লম্বোকের একটি লম্বোক সাপোর্টেড আইডিই ব্যবহার প্রয়োজন। এই নির্ভরতা কোনও তুচ্ছ প্রকল্পের জন্য যথেষ্ট ঝুঁকির পরিচয় দেয়। ওপেন সোর্স লম্বোক প্রকল্পের জাভা আইডিইর বিস্তৃত বিস্তৃত সংস্করণের বিভিন্ন সংস্করণ সমর্থন সরবরাহ করার জন্য কি যথেষ্ট সংস্থান রয়েছে?
  3. ভবিষ্যতে আসছে জাভা এর নতুন সংস্করণগুলির জন্য সমর্থন সরবরাহের জন্য কি ওপেন সোর্স লম্বোক প্রকল্পের যথেষ্ট সংস্থান রয়েছে?
  4. আমি আরও ঘাবড়ে গিয়েছি যে লোম্বোক বহুল ব্যবহৃত ফ্রেমওয়ার্ক / লাইব্রেরি (যেমন স্প্রিং, হাইবারনেট, জ্যাকসন, জুনিট, মকিতো) এর সাথে সামঞ্জস্যতার সমস্যাগুলি প্রবর্তন করতে পারে যা রানটাইমে আপনার বাইট কোডের সাথে কাজ করে।

সব মিলিয়ে আমি লম্বোকের সাথে আমার জাভা "স্পাইস আপ" করতে পছন্দ করব না।


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

10

লম্বোকের ব্যবহার করতে চেয়েছিলেন @ToStringতবে শীঘ্রই ইন্টেলিজ আইডিইএতে প্রকল্পটি পুনর্নির্মাণে এলোমেলো সংকলনের ত্রুটির মুখোমুখি হয়েছিল। ইনক্রিমেন্টাল সংকলন সাফল্যের সাথে সম্পন্ন হওয়ার আগে বেশ কয়েকবার সঙ্কলন করতে হয়েছিল।

Jdk 1.6.0_39 এবং 1.6.0_45 এর অধীনে কোনও লম্বোক প্লাগইন ছাড়াই ইন্টেলিজ আইডিএ 12.1.6 এবং 13.0 এর সাথে লম্বোক 1.12.2 এবং 0.9.3 উভয়ই চেষ্টা করেছেন।

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

হালনাগাদ

সমস্যাটি কেবল প্যারালাল কম্পাইল সক্ষম থাকলেই ঘটে।

একটি সমস্যা ফাইল করেছেন: https://github.com/rzwitserloot/lombok/issues/648

হালনাগাদ

এমপ্লুশনিকভ 30 জানুয়ারী 2016 এ মন্তব্য করেছেন:

ইন্টেলিজের নতুন সংস্করণে আর এ জাতীয় সমস্যা নেই। আমি মনে করি এটি এখানে বন্ধ করা যেতে পারে।

হালনাগাদ

আমি সম্ভব হলে জাভা + লম্বোক থেকে কোটলিনে স্যুইচ করার পরামর্শ দিচ্ছি । যেহেতু এটি জাভা সংক্রান্ত সমস্ত সমস্যা সমাধান করেছে যা লোমবক চারপাশে কাজ করার চেষ্টা করে।


6

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


2

আমি এটি সুপারিশ করছি না। আমি এটি ব্যবহার করতাম, তবে তারপরে আমি যখন নেটবিन्स 7.৪ নিয়ে কাজ করি তখন এটি আমার কোডগুলিকে গোলমাল করছে। আমি আমার প্রকল্পের সমস্ত ফাইলের লম্বোক সরিয়ে ফেলছি। ডেলম্বোক রয়েছে, তবে আমি কীভাবে নিশ্চিত হতে পারি যে এটি আমার কোডগুলি স্ক্রু করবে না। লম্বোক সরিয়ে সাধারণ জাভা শৈলীতে ফিরে যেতে আমাকে কয়েকদিন কাটাতে হবে। আমি ঠিক খুব মশলাদার ...


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

লম্বোক দল তাদের কোড আপডেট করেছে। তবুও, এটি প্রস্তুত হওয়ার আগে আমাকে বেশ কয়েক মাস অপেক্ষা করতে হবে
হারুন

0

আমি এখনও লম্বোককে ব্যবহার করার চেষ্টা করি নি - এটি আমার তালিকার পাশের / ছিল, তবে মনে হচ্ছে জাভা 8 এটির জন্য উল্লেখযোগ্য সমস্যা সৃষ্টি করেছে এবং প্রতিকারের কাজটি এক সপ্তাহ আগেও চলছে। এর জন্য আমার উত্স হল https://code.google.com/p/projectlombok/issues/detail?id=451


কেবল রেকর্ডের জন্য, এই সমস্যাটি github.com/rzwitserloot/lombok/issues/524
seanf

1
জাভা 8
আলেক্সি

আমি এখন কয়েক মাস ধরে লম্বোকের সাথে কাজ করছি এবং এটি জাভা ৮ এর সাথে ভাল কাজ করে I
কেভেনলোলো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.