জাভাস্ক্রিপ্ট থেকে সেমিকোলনগুলি সরিয়ে / বাদ দিতে সাম্প্রতিক স্থানান্তর কেন?


79

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

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

  • এটি তার দলের পক্ষে অগ্রাধিকারের বিষয়;
  • কম টাইপিং

এগুলি ছেড়ে দেওয়ার অন্যান্য কোনও ভাল কারণ আছে?

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


2
"প্রস্তাবিত অনুশীলনের বছরগুলি" কালো তালিকাভুক্ত এসও পোলস ট্যাগটির একটি প্রশ্ন উল্লেখ করে যা কোনও ধরণের মতামতকে সমর্থন করার পক্ষে সম্ভাব্য নয়
জিনাত

24
@ জ্বলুন এ কারণে যে লোকেরা এই প্রশ্নটিকে ঘৃণা করে তাই এসও তে থাকা জনগণের মতের একটি কম বৈধ উত্স হয় না।
রাইথাল

3
@ গ্যাनेट প্রশ্নগুলি যেগুলি "স্ট্যাকওভারফ্লোতে আনুষ্ঠানিকভাবে বিবেচিত হয়" কখনও কখনও বিশেষজ্ঞ সম্প্রদায়ের দ্বারা খুব অনুমোদিত হিসাবে বিবেচিত হয়। দুঃখের হলেও সত্য.
মার্কজে

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

1
এটি 2010 এর দশকের গোড়ার দিকে হিপস্টারগুলির ক্রমবর্ধমান বিশিষ্টতা সম্পর্কিত হতে পারে ।
অ্যালেক্স

উত্তর:


61

আমি মনে করি আমার যুক্তিটি হ'ল: আমি একই সাথে অনেকগুলি ভিন্ন ভাষায় প্রোগ্রাম করি (জাভা, জাভাস্ক্রিপ্ট, পিএইচপি) - যার প্রয়োজন ';' আমার আঙ্গুল এবং চোখ প্রশিক্ষণের চেয়ে বরং ';' জাভাস্ক্রিপ্টের জন্য প্রয়োজন হয় না, আমি কেবল সর্বদা ''; 'যোগ করি

অন্য কারণ হ'ল ডকুমেন্টেশন: ';' যুক্ত করে; আমি স্পষ্টভাবে নিজেকে উল্লেখ করছি যেখানে আমি আশা করি যে বিবৃতিটি শেষ হবে। তারপরে আবার আমি সব সময়ও use use ব্যবহার করি।

পুরো বাইট গণনা যুক্তি আমি বিরক্তিকর এবং অর্থহীন বলে মনে করি:

1) jquery এর মতো সাধারণ লাইব্রেরির জন্য: গুগল সিডিএন ব্যবহার করুন এবং লাইব্রেরি সম্ভবত ব্রাউজারের ক্যাশে থাকবে

2) আপনার নিজের লাইব্রেরিগুলি সংস্করণ করুন এবং এগুলি চিরতরে ক্যাশে রাখার জন্য সেট করুন।

3) জিজিপ করুন এবং যদি সত্যিই প্রয়োজন হয় তবে এটি ন্যূনতম করুন।

তবে সত্যিই কতগুলি সাইট তাদের জাভাস্ক্রিপ্টের ডাউনলোডের গতি বাধা দেয়? আপনি যদি শীর্ষস্থানীয় 100 টি সাইটের জন্য কাজ করেন যেমন টুইটার, গুগল, ইয়াহু ইত্যাদি etc. আমাদের বাকী সকলের উচিত কোডের মানের বিষয়ে আধ্যাত্মিক যুদ্ধগুলি নয় worry


3
আমার ধারণা বিপরীতটিও সত্য হতে পারে। অজগর যেমন ওয়েবের জন্য আরও জনপ্রিয় হয়ে ওঠে আপনার জেএসটি পাইথনের সাথে সাদৃশ্য পাওয়া আরও সহজ।
বেন ডিমট

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

6
যদি বাইট গণনা হ্রাস করা জরুরী হয় তবে আপনার কাছে এমন কিছু আছে যা ফাইলগুলি যতটা সম্ভব কমাতে পারে। যদি এটি এখনও কোনও মিনিমাইজার ব্যবহারের পক্ষে মূল্যবান না হয়, তবে 'অপসারণের বিষয়ে চিন্তা করার মতো নয়;' বাইট গণনা বাঁচাতে।
Lawtonfogle

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

মানুষের গভীর নীড় বোঝার জন্য ইন্ডেন্টেশন প্রয়োজন, যার জন্য সেমিকোলনের চেয়ে বেশি বাইট প্রয়োজন। যদিও সেমিকোলনগুলি কীপ্রেসের বর্জ্যগুলি বিভ্রান্ত করছে।
সিস টিমারম্যান

39

এটি পদ্ধতিটিকে সহজ শৃঙ্খলাবদ্ধ করে তোলে এবং বিভিন্ন ক্লিনার প্রতিশ্রুতিবদ্ধ

সুতরাং আসুন আমি জিক্যুরি করছি এবং আমি তা বলি

$('some fancy selector')
  .addClass()
  .attr();

আমি যদি স্টাফ যুক্ত করতে এবং আমার লাইন-ভিত্তিক প্রতিশ্রুতিটি আলাদা রাখতে চাই , আমাকে এটির উপরে থাকতে হবে। সুতরাং এটি "শেষে যুক্ত করুন" এর চেয়ে দীর্ঘতর চিন্তাভাবনা। আর কে ভাবতে চায়? =)

$('some fancy selector')
  .addClass()
  // new method calls must go here
  .attr();

তবে, আমি যখন আধা-কলোনগুলি ফেলে রাখি, তখন আমি কেবল এটি সংযোজন করতে এবং একটি দিন কল করতে পারি

  $('some fancy selector')
    .addClass()
    .attr()
+   .animate()
+   .click()

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

  $('some fancy selector')
    .addClass()
    .attr()
    .animate()
-   .click()

উগগো বনাম

  $('some fancy selector')
    .addClass()
    .attr()
+   .animate();
-   .animate()
-   .click();

37
এটি কুলুঙ্গি ব্যবহারের আইএমও।
জেবিআর উইলকিনসন

9
তবুও আকর্ষণীয়।
জোনাথন

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

11
এগুলি কি কেবল আমিই অবাক হয়েছি যে কেন কেউ তাদের আচরণের ভিন্নতা কতটা ঝরঝরে দেখায় যত্ন নেবে? একটি সাধারণ নিয়ম হিসাবে, লোকেরা কোড পড়েন, ভিন্ন নয়।
জুলাই

11
@ জুলস, ক্লিনার ডিফেন্স মানে মার্জগুলি সফল হওয়ার সম্ভাবনা বেশি।
জোয়েটউইডল

22

জাভাস্ক্রিপ্টে আধা কলোন alচ্ছিক

আধা কলোন ব্যবহার না করার জন্য আমার ব্যক্তিগত কারণ হ'ল OCD।

আমি যখন আধা কলোন ব্যবহার করি তখন আমি তাদের 2% ভুলে যাই এবং ক্রমাগত তাদের চেক করে / পুনরায় যুক্ত করতে হয়।

আমি যখন সেমি কলোন ব্যবহার করি না তখন আমি কখনই দুর্ঘটনাক্রমে একটি রাখি না তাই আমাকে কখনই চেক / অপসারণ করতে হবে না।


3
ভাল একটা. আমি একটি অর্ধবৃত্ত-কম রেখা দ্বারা বা দুটি অন্যথায় সঠিকভাবে অর্ধরঙে ফাইল দ্বারা পোড়া হয়েছি।
জোনাথন

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

16

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

স্পষ্টতই, jQuery, zepto, ইত্যাদি ফ্রেমওয়ার্ক লেখার লোকেরা জাভাস্ক্রিপ্ট সিনট্যাক্স মাস্টার এবং সুতরাং তারা এর মধ্যে পার্থক্যটি জানতে পারে:

return
{
    status: true
};

এবং

return {
    status: true
};

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

  1. তাদের বলুন "এই নিয়মটি অনুসরণ করুন এবং কেন তা জিজ্ঞাসা করবেন না", প্রতিটি লাইনের শেষে সর্বদা একটি সেমিকোলন রাখতে বলুন। দুর্ভাগ্যক্রমে, এটি উপরের উদাহরণে বা এএসআই যেখানে পায় অন্য কোনও উদাহরণে সহায়তা করে না। এবং উপরের কোডটি ব্যর্থ হলে মিঃ বা মিসেস শিক্ষানবিস প্রোগ্রামার বিভ্রান্ত হয়।
  2. বলুন তাদের "এই দুটি নিয়ম অনুসরণ এবং জিজ্ঞাসা না কেন" তাদের কহন যে লাইনের শেষে সেমিকোলন দিয়ে বিরক্ত করার জন্য না এবং পরিবর্তে সবসময় ক) অনুসরণ returnএকটি সঙ্গে {, এবং খ) একটি লাইন একটি দিয়ে শুরু হয় যখন (, শুরুতে যোগ একটি সঙ্গে এটি ;

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


8
ঠিক আছে, আমি কামড় দেব। উপরের দুটি উদাহরণের মধ্যে সিনট্যাক্সের পার্থক্য বুঝতে আমাকে সহায়তা করুন। আমার প্রশিক্ষণপ্রাপ্ত চোখ কেবল বিন্যাসে একটি পার্থক্য দেখে।
জেসি সি স্লিকার 20

9
বা অন্যদিকে, আমি নিছক দুর্ঘটনার জবাব দিয়ে হোঁচট খেয়েছি। প্রথম উদাহরণে, এটি returnএকটি নির্জন বিবৃতি হিসাবে বিবেচিত হয় এবং লাইন-এন্ড একটি সেমিকোলনের সমতুল্য। দ্বিতীয় উদাহরণ আসলে বস্তুটি ফেরত দেয়। রঙ্গপ্রিয়।
জেসি সি স্লিকার

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

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

9
স্পষ্টকরণের বিষয়টি: returnউদাহরণটি আসলে জেএস আচরণের ব্যতিক্রম যা অর্ধ-কোলন বাদ দিলে একসাথে লাইন টানতে চেষ্টা করা। return, breakএবং continueসমস্তই এই ব্যতিক্রমী আচরণটি প্রদর্শন করে যেখানে একটি অনুবর্তনযোগ্য নিউলাইন সর্বদা বিবৃতিটির শেষে হিসাবে ব্যাখ্যা করা হয়। (উত্স হ'ল ফ্লানাগনের "জাভাস্ক্রিপ্ট: দ্য সংজ্ঞা নির্দেশিকা" পিপি 25-26)। ব্যক্তিগতভাবে, আমি "ন্যূনতম বিস্ময়ের কোড" ধারণার জন্য প্রচেষ্টা করি। আধা-কলোন রেখে বাইরে যাওয়ার ফলে যে কোনও কিছুর চেয়ে বেশি চমক পাওয়া যায় (আমি সাধারণত আমার কোঁকড়া ধনুর্বন্ধকে এমনকি সাধারণ বিবৃতিতে রাখি)।
কাইল

16

ইনফরমেশন ওভারলোডের মতো কোনও জিনিস নেই, কেবল খারাপ ডিজাইন।

- এডওয়ার্ড টুফ্টে

এটা একটা ব্যাপার গ্রাফিক নকশা সাধারণ নিয়ম অপ্রয়োজনীয় উপাদান এবং অলঙ্করণ বাদ গোলমাল কমাতে।

স্ক্রিনে কম ভিজ্যুয়াল উপাদানগুলির অর্থ আমাদের মস্তিষ্কের প্রকৃত দরকারী তথ্যকে বিশ্লেষণ করার জন্য কম পরিশ্রম।

let foo = 1

বনাম

let /* variable */ foo = 1; // EOL

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

জাভাস্ক্রিপ্টে সেমিকোলন ব্যবহারের historicalতিহাসিক কারণগুলি হ'ল:

  • সি / জাভার সাথে সাদৃশ্য বজায় রাখুন
  • দুর্বল লিখিত ব্রাউজার এবং সরঞ্জামগুলির সাথে সামঞ্জস্যের সমস্যাগুলি এড়িয়ে চলুন
  • কোড ও ত্রুটি সনাক্ত করতে মানব ও মেশিনগুলিকে সহায়তা করা
  • স্বয়ংক্রিয় সেমিকোলন সন্নিবেশ একটি পারফরম্যান্স পেনাল্টি বহন করে

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

ভি 8-তে পারফরম্যান্স পেনাল্টি রয়েছে কিনা তা দেখার জন্য আমি দ্রুত পরীক্ষা করেছিলাম। এটি Io.js সেমিকোলন এবং পরে সেমিকোলনগুলি সরিয়ে একটি 41 এমবি জাভাস্ক্রিপ্ট ফাইল (লোড্যাশ 100 বার পুনরাবৃত্তি করেছে) পার্স করছে:

$ time node lodashx100.js
node lodashx100.js  2.34s user 1.30s system 99% cpu 3.664 total
$ time node lodashx100s.js
node lodashx100s.js  2.34s user 1.15s system 99% cpu 3.521 total

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


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

8

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

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

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

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

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


5

বেশ পুরানো প্রশ্ন, তবে আমি অবাক হলাম কেউই উল্লেখ করেননি:

সংক্ষিপ্তকরণ: আপনি যদি জাভাস্ক্রিপ্ট স্নিপেটকে ছোট করে দেখেন যা স্পষ্টভাবে অর্ধ-কোলন চরিত্রের সাহায্যে বিবৃতিগুলি শেষ করে না, আপনি স্নিপেটের কী ভুল আছে তা নির্ধারণের জন্য কঠোর সময় কাটাতে পারেন যা কেবলমাত্র খাঁচার আগে কাজ করছিল? এবং এখন কাজ করে না।

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

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

আজকাল কেন এটি আরও জনপ্রিয় হয়ে উঠছে?

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


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

3

এগুলিকে রাখার যথেষ্ট কারণ রয়েছে।

এগুলি আসলে optionচ্ছিক নয়, জেএস অনুপস্থিত থাকাকালীন সেগুলি স্বয়ংক্রিয় সেমিকোলন সন্নিবেশের সাথে আবার যুক্ত করতে পারে তবে এটি একই জিনিস নয়।

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

জেএসলিন্ট অনুমোদন দেয় না।


3

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

আধা-কলোনগুলির প্রয়োজনের জন্য কোনও ভাষার জন্য পার্সার লিখতে সহজ হতে পারে, তবে সেখানে প্রতিটি দোভাষী যদি সেমি-কোলন বাদ দেওয়ার পক্ষে সমর্থন করেন তবে বিন্দুটি ঠিক কী?

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

আপনি ভাল কি মনে হয়; অবহিত সিদ্ধান্ত গ্রহণ বা অন্ধ সিদ্ধান্ত গ্রহণ / পশুর মানসিকতা?


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

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

@ টিমসিগাইন হ্যাঁ, আমার আরও ভাল বোঝার আগে আমি এটি ফিরে লিখেছিলাম। আমি এখনও মনে করি না যে সেমিকোলনগুলি এত দিন ব্যবহার না করা অবাস্তবকভাবে ভুল কারণ লোকেরা বুঝতে পারে যে তারা ঠিক কি করছে। আমার পোস্টটি পুনরায় কাজ করা উচিত, বা সম্ভবত অন্যরা এ সম্পর্কে চিমন করায় এটি এ থেকে মুক্তি পাব। ভদ্র সমালোচনার জন্য ধন্যবাদ! :)
রাভেনস্টাইন

2

আমার দুটি তত্ত্ব আছে:

ক)

এই পছন্দের বিষয়টি হ'ল আগের দিন, যখন জেএসলিন্ট ইত্যাদি প্রযোজ্য ছিল, আপনি অস্পষ্ট সিনট্যাক্স ত্রুটিগুলি ধরার জন্য প্রচুর পরিমাণে সময় ব্যয় করতে বা কোডের উপর একটি মান নীতি প্রয়োগ করার জন্য যুক্তিসঙ্গত পরিমাণ ব্যয় করতে বেছে নিচ্ছিলেন।

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

B ইংরেজী বর্ণমালার দ্বিতীয় অক্ষর)

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

(এনবি আমি এমন কিছু বাদ দেওয়ার ধারণার সাথে একমত নই যা একটি বিবৃতিকে অসম্মান করে )


1
jshint এখনও একটি গুরুত্বপূর্ণ সরঞ্জাম।
রায়নস

কোনও বিবৃতি \n;\n
ছড়িয়ে

2
@ রায়নস আসলে, আমি খুঁজে পেয়েছি যে আমি প্রায়শই কাজ করি এমন ফ্রেমওয়ার্ক-ভারী কোডগুলির জটিলতার সাথে জেএসলিন্ট কিছুটা অকেজো হয়ে পড়েছে। প্লাস,; \ n এবং \ n সমস্ত পরিস্থিতিতে এক নয় , অন্যথায় কখনও কখনও এর প্রয়োজন হবে না;
এড জেমস

7
jslint অকেজো, jshint তবে একটি ভিন্ন সরঞ্জাম।
রায়নস

0

আমি এগুলি ছাড়ি না, তবে কখন inোকাতে হবে সেগুলি আমি নিয়মগুলিতে পরিবর্তন করি।

বেশিরভাগ লোকেরা যে নিয়ম ব্যবহার করেন তা হ'ল

  • প্রতিটি লাইন শেষ হওয়ার আগে
  • লাইন ব্যতীত }কোনও ফাংশন বিবৃতি থেকে আগত
  • তবে শুধুমাত্র একটি ফাংশন বিবৃতি, কোনও ফাংশন আক্ষরিকের জন্য বরাদ্দ নয়

আমার নিয়মটি হল: প্রতিটি একক লাইনের শুরুতে একটি খোলার ব্রেস / বন্ধনী দিয়ে শুরু হয়।

খনিটি সহজ, অতএব অনুসরণ করা সহজ এবং বাগগুলি থেকে কম one এছাড়াও সেমিকোলনের কম সংখ্যক এটিকে ছেড়ে রেখে বাগগুলি খুঁজে পাওয়া সহজ করে তোলে।


আর একটি যুক্তি হ'ল কুখ্যাত return\nvalueবাগটি এএসআই সম্পর্কে না জেনে আসে। আমার বিধি আপনাকে এএসআই সম্পর্কে জানতে বাধ্য করে, সুতরাং আমার বিধি ব্যবহারকারী লোকেরা সেই বাগের ফাঁদে পড়ার সম্ভাবনা কম।


0

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

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