আপনি প্রায়শই ব্যবহার করেন এমন একটি প্রোগ্রামিং ভাষায় কোন সিনট্যাক্স উপাদানটি ঘৃণা করেন? [বন্ধ]


27

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

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


@ নাথন টেলর, এই প্রশ্নের জন্য নয়, অন্য একটি প্রশ্নের জন্য
ফিনিউ

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

@ তালভি: না, এটি শুরু থেকেই বাক্য গঠন সম্পর্কে ছিল।
টিমভি

@ টিমভি অদ্ভুত, ততক্ষণে 'কোনও প্রশ্নের উত্তর দেওয়ার ক্ষেত্রে এটি অবশ্যই আলাদা ছিল' এমন বিষয় হতে হবে।
তালভি ওয়াটিয়া

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

উত্তর:


39

জাভাস্ক্রিপ্টে সেমিকোলন সন্নিবেশ।

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


এখানে বিধিগুলি রয়েছে (ইসিএমএ-262 বিভাগ 7.9 থেকে)

  1. প্রোগ্রামে একটি টোকেন থাকে যা আনুষ্ঠানিক ব্যাকরণ দ্বারা অনুমোদিত নয়, তারপরে একটি সেমিকোলন প্রবেশ করানো হয় যদি (ক) সেই বিন্দুতে একটি লাইন ব্রেক হয়, বা (খ) অপ্রত্যাশিত টোকেনটি একটি বন্ধনী বন্ধনী ছিল।
  2. যখন কোনও ফাইলের সমাপ্তি পৌঁছে যায়, যদি প্রোগ্রামটি অন্যভাবে পার্স করা যায় না, তবে একটি সেমিকোলন sertedোকানো হয়।
  3. যখন একটি "সীমাবদ্ধ উত্পাদনের" মুখোমুখি হয় এবং ব্যাকরণটিতে টিকা থাকে এমন কোনও স্থানে একটি লাইন টার্মিনেটর থাকে "[এখানে লাইনটার্মিনেটর নেই]", তখন একটি সেমিকোলন .োকানো হয়।

উদাহরণ:

return 1; // returns 1

return
1; // returns undefined

2
জাভাস্ক্রিপ্ট: বিশ্বের সবচেয়ে বেশি ভুল বোঝাবুঝি প্রোগ্রামিং ভাষা ~ ডগলাস ক্রকফোর্ড
pramodc84

হ্যাঁ, অনেকেই জাভাস্ক্রিপ্টকে একটি "ফর্ম-ফর্ম ল্যাঙ্গুয়েজ" হিসাবে প্রত্যাশা করছেন, তবে তা তা নয়।
Andreas Rejbrand

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

7
এই ধরণের ত্রুটিগুলি আমার কাছে একটি কোড-গন্ধ যা প্রোগ্রামারটি আস্তে আস্তে থাকে এবং সেগুলি কখনও কখনও বেশিরভাগ আনুষ্ঠানিক "কড়া" ভাষার সাথে কাজ করে নি যা সাধারণত আধা-কোলন ছাড়ার জন্য একটি বাক্য গঠন ত্রুটি সৃষ্টি করে।
তালভি ওয়াটিয়া

7
ওহো, অবশেষে অন্য কেউ যিনিও দৃust়তা নীতি মনে করেন এমন একটি বিপর্যয় যা এইচটিএমএলকে সম্পূর্ণ জগাখিচু করে দিয়েছে it
রোমান স্টারকভ

39

সি # বৈশিষ্ট্যের অভাবে জাভা-শিম সিনট্যাক্স

/**
 * Name of user
 */
private String name;

/**
 * Gets name of user
 * @return Name of user
 */
public String getName() {
    return this.name;
}

/**
 * Sets name of user. 
 * @param name
 */
public void setName(final String name) {
    this.name = name;
}

গাহ !!!

আমার এই সমস্যাগুলি আছে

  • খুব বেশি কোড - ডকুমেন্টেড এমন একটি ক্ষেত্র, ডকুমেন্টযুক্ত একটি গিটার পদ্ধতি এবং নথিভুক্ত একটি সেটার পদ্ধতি রয়েছে। এই অত্যন্ত মৌলিক উদাহরণটিতে একটি একক সম্পত্তির জন্য কোডের 20 লাইন রয়েছে
  • Clutters পদ্ধতি তালিকা : - "আমাকে যে পদ্ধতি, গায়ে হাত খুঁজে পেতে দিন getX, getY, getZ, getAnotherAnnoyingField, getWhyIHateJavaBeans, getThisIsVerbose, getGAH, ... অই সেখানে এটা hashCode
  • একাধিক ক্ষেত্রের ডকুমেন্টেশনগুলি দরিদ্র, পুরানো বা নিখোঁজ ডকুমেন্টেশনের দিকে নিয়ে যায় - কোড কী করে তা বোঝার চেষ্টা করার সময় বিরক্তিকর
  • তাই সহজেই এটি করার জন্য একটি তৃতীয় পক্ষকে বিরক্ত করতে একটি প্লাগইন নিয়ে আসতে হয়েছিল - চামচ , শার্ক , অন্যদের মধ্যে।

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

11
আপনার যদি প্রতিটি জিনিসের দরকার হয় তবে ক্লায়েন্ট কোডে কিছু ভুল ।
ফাইনেন

7
গিটার এবং সেটারগুলি থাকার ফলে এনক্যাপসুলেশন বিরতি ঘটে। ক্ষেত্রটি পাশাপাশি হতে পারে public। সদস্যদের ব্যক্তিগত হতে হবে এবং ক্লায়েন্ট কোড থেকে গেটার এবং সেটটারদের সাথে নয় , উচ্চ-স্তরের যুক্তি সহ শ্রেণীর দ্বারা সংবেদনশীলভাবে ম্যানিপুলেট করা উচিত ।
গ্রেফ্যাড

6
@ গ্রেফ্যাড: যদি এটি সর্বজনীন হয় তবে সেটিং কোডটি যা করায় তা আপনি সহজেই পরিবর্তন করতে পারবেন না (আপনাকে ক্ষেত্রটি বাইরের থেকে সেট করে এমন সমস্ত কোড পরিবর্তন করতে হবে)।
বার্ট ভ্যান হিউকেলোম

3
@ শিখনকিউ: জাভা পরিষ্কার দেখাচ্ছে? আমি এর আগে কখনও শুনিনি! জাভা সহ আমার প্রধান আকস্মিক সত্য যে আপাতদৃষ্টিতে সহজ জিনিসটি মানসিকভাবে উপেক্ষা করার জন্য আমার কয়েক ডজন লাইন কোড লাগে।
কনফিগারকারী

33

হোয়াইটস্পেস সংবেদনশীলতা।

পাইথন আমাকে এই সম্মানে বিরক্ত করে। আমি বলতে চাচ্ছি, আমি সঠিকভাবে যাহাই হউক না কেন ইন্ডেন্ট, কিন্তু এটা আমার বাগ আমি উচিত যে আছে আছে। সিনট্যাক্সের উপস্থাপনা অংশ করা আমাকে বিরক্ত করে।


8
আপনি এটি পছন্দ করতে শিখবেন
user10008

2
সিনট্যাক্স হল উপস্থাপনা
উইনস্টন Ewert

32

switchবিবৃতি (সি, C ++, সি #, জাভা, ইত্যাদি)

কেন আমি এটি অত্যন্ত অসুবিধে করি তার উদাহরণ এখানে:

switch (someVariable)
{
    case 1:
        int i = something();
        doSomething(i);
        break;

    case 2:
        int i = somethingElse();
        doSomethingElse(i);
        break;
}

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

switch (someVariable)
case 1
{
    int i = something();
    doSomething(i);
}
case 2
{
    int i = somethingElse();
    doSomethingElse(i);
}
default
{
    ...
}

এটি এটিকে if/ elseচেইনের মতো দেখতে আরও ভাল করে তোলে, এটি একটি ভাল জিনিস কারণ এটি শব্দার্থগতভাবেও অনুরূপ। কমপক্ষে সি # তে এটি এখনও একই জিনিস হবে না, কারণ একটি switchবিবৃতিতে কেস লেবেলগুলির ক্রম কোনও বিবেচনা করে না, তবে একটি ক্ষেত্রে if/ elseতা করে।


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

7
না, এটি এর সাথে দূরে থাকে না। এটি কেবলমাত্র এটি আরও সুস্পষ্টভাবে তৈরি করা প্রয়োজন (একটি gotoবা অনুরূপ ব্যবহার করে ), যেমনটি ইতিমধ্যে সি # তে রয়েছে।
টিমউই

8
@ গ্রেফ্যাড: সি-তে ডাফের ডিভাইস ব্যবহার করা যে কোনও কোডকে একটি ভয়াবহ মৃত্যুবরণ করতে হবে। সংকলকগণ আপনার চেয়ে এই ধরণের জিনিস সম্পর্কে আরও ভাল সিদ্ধান্ত নেন।
বিলি ওনিল

4
@greyfade: ডেল্ফী কেবল ক্ষেত্রে একাধিক সূচকের অনুমতি দিয়ে একাধিক মান সমস্যা এড়াতে পায়: case Foo of 1,3: Result := 'odd'; 2,4: Result := 'even' end;
ফ্রাঙ্ক শায়ারার

3
@ জেকেরিয়ান: এখন কল্পনাটি breakডিফল্ট ছিল এবং কেবল পতনের বিষয়টি নির্দিষ্ট করা দরকার। এটি মন্তব্য করার জন্য আর মনে করার দরকার নেই! :)
টিমভি

27

VB.NET এ অ্যারে ঘোষণা

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

Dim myArray(20) as Integer  '# Creates an array with 21 elements,
                            '# indexed from 0 to 20

আমি মনে করি সমস্ত বেসিক ভাষাগুলি এটি করে ... আমি জানি অরিজিনাল বেসিক এবং কিউবাসিক এটি করে।
মাইকেল কে

ওএমজি যা সত্যই ভয়ঙ্কর .... +1
মাইক্রা

25

ভিবি 6 - পৃথক পরিবর্তনশীল ঘোষণা এবং বরাদ্দকরণ

বেশিরভাগ ভাষা আপনাকে ভেরিয়েবল ঘোষণা করতে দেয় এবং কোডের এক লাইনে সেট করে দেয়; অন্যদিকে ভিবি 6 আপনাকে দুটি ব্যবহার করতে বাধ্য করে।

Dim i as Integer
i = 0

Dim derpderp as Collection
Set derpderp = new Collection

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

Dim i as Integer: i = 0
Dim derpderp as Collection: Set derpderp = new Collection

7
আপনার সর্বাধিক ঘন ভাষা হিসাবে ভিবি 6 ব্যবহার করার জন্য +1।
ওয়াল্টার

9
আমি প্রতিদিন এটি ব্যবহার করি..সোব।
সিস্টেমে

পাস্কেলের কি একই রকম সিনট্যাক্স নেই? আমি সবসময় এটা খারাপ লাগত।
গ্রেফ্যাড

1
একটি বিশেষ কেস রয়েছে: আপনি Dim Hurp As New Collectionযদি Hurpএটি ব্যবহার করে তবে আপনি যদি অ্যাক্সেস করেন Nothingতবে অ্যাক্সেসের আগে এটি যাদুতে শুরু করা হবে। আপনি যদি স্পষ্টভাবে সেট করে সেট করে Nothingআবার স্পর্শ করেন তবে তা পুনরুত্থিত হবে ... হাঁফ!
জেফ্রি হ্যান্টিন

1
ডের্পের জন্য + 1 মিলিয়ন। Derp de derp de tiddly tum de derp।
এমভিকাইলন

24

সিএসএসে মন্তব্য করছি

//কোডের লাইনগুলি যেমন পিএইচপি এবং জাভাস্ক্রিপ্টের মতো আরও অনেক ভাষায় মন্তব্য করে না। যদিও /* this is commented out */কাজ করে, আমি ব্যবহার করতে পছন্দ করি //

এটি একটি উপদ্রব, কারণ আমি ভুলে যাচ্ছি যে অর্ধবার আমি সিএসএস সম্পাদনা করছি এবং তারপরে ফিরে গিয়ে ত্রুটিটি ঠিক করতে হবে।


আপনি এই দিন এবং যুগে ভাবেন যে কাঁচা সিএসএস বস্তু কোড হিসাবে বিবেচিত হবে।
টম হাটিন -

// সিএসএস মন্তব্য করার জন্য ঠিক কাজ করে। আমি সব সময় এটা। আমি সত্যিই যা করছি তা হ'ল আবর্জনা টাইপ করা। তবে মনে হয় এটি অপসারণযোগ্য লাইনটি এড়িয়ে গিয়ে কাজ করবে।
এমভিকাইলন

1
@ এমভিকায়লন যদি আপনি // লাইনটি মন্তব্য করতে ব্যবহার করেন তবে নিম্নলিখিত লাইনের পরে যে কোনও কিছু বাদ দেওয়া হবে। specific সেই নির্দিষ্ট স্টাইলের মধ্যেই other অন্য কথায়, এটি ব্যর্থ হয় কারণ সেই লাইনগুলি এড়িয়ে যাওয়া উচিত নয়।
তালভি ওয়াটিয়া

20

পিএইচপি - যুক্তিগুলির ধারাবাহিক ক্রম

আপনি কোনও অ্যারে বা স্ট্রিংয়ের বিষয়ে ভাবতে পারেন এমন প্রতিটি ক্রিয়াকলাপ করার জন্য পিএইচপি-র অনেকগুলি কার্যকরী ফাংশন রয়েছে। এই ক্রিয়াকলাপগুলির মধ্যে অনেকগুলি a $needleএবং a উভয়ই প্রয়োজন হয় $haystackতবে বিভিন্ন ফাংশন এগুলিকে বিভিন্ন ক্রমে গ্রহণ করে। আমার ক্রিয়াকলাপটি কোন ক্রিয়াকলাপের জন্য প্রয়োজন সেই যুক্তিগুলির মধ্যে একটি হ'ল আমার মস্তিষ্ক শোষিত হতে অস্বীকার করে, আমি যতবার ঘন ঘন আসি না কেন!

ইন_রে এবং স্টারস্টারে ফাংশনগুলি নিন :

// Check whether $needle occurs in array $haystack
bool in_array (mixed $needle, array $haystack [, bool $strict])

// Check whether $needle is a substring of $haystack
string strstr (string $haystack, mixed $needle [, bool $before_needle=false])

আনন্দের দিক থেকে যথেষ্ট, পিএইচপি অভ্যন্তরীণভাবে এই ক্রমগুলির সাথে সামঞ্জস্যপূর্ণ বলে মনে হচ্ছে যে $haystack, $needleঅ্যারে ফাংশনগুলি অন্যদিকে যেমন সমস্ত স্ট্রিং ফাংশন ব্যবহার করে তবে এটি পিএইচপি-তে নতুন কারও অভ্যস্ত হতে কিছুটা সময় নিতে পারে। এক্সপ্রেশনএঙ্গিনে একটি ভাল পোস্ট রয়েছে যা এই নির্দিষ্ট কৌতুক সম্পর্কে আরও বিস্তারিতভাবে কথা বলছে, পাশাপাশি পিএইচপি বাগগুলি তালিকায় একটি আলোচনা রয়েছে, যা পিএইচপি দলের খুব সংক্ষিপ্ত প্রতিক্রিয়া দেখায়!

helly@php.net
তখন একটি শালীন আইডিই ব্যবহার করুন।

2
অর্ডারটি মনে রাখা আরও সহজ $needle, $haystackকারণ এটি খড়ের খাঁজে একটি সূঁচ খোঁজার কথাটি মনে করিয়ে দেয় ।
কিমলালুনো

3
প্রতিলিপি: অ্যারে ফাংশনে, সুই প্রথম আসে first স্ট্রিং ফাংশনে, খড়খড়ি প্রথম আসে comes
জিএসটি

17
আমি নামটি পছন্দ করি strstr। এত সুন্দর অর্থহীন।
কনফিগারকারী

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

2
সত্যি বলতে কী, আমাকে এই সম্পর্কে ক্রেজি দেয় তা হ'ল এটি কোনও ফাংশন হওয়া উচিত নয়! এটি কেবল একটি পদ্ধতি হওয়া উচিত: $ খড়ের গালি-> সন্ধান ($ সূঁচ)। কাজ সম্পন্ন
রিওয়ালক

19

পাইথন

self উদাহরণ পদ্ধতি সংজ্ঞা পরামিতি


একটি শ্রেণিবদ্ধে, এটি সাধারণত ক্লসের নাম দেওয়া হয় এবং স্ব ব্যবহার করে কনভেনশনের বিরুদ্ধে থাকে।

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

4
আমি কারণগুলি বুঝতে পেরেছি এবং কেন এটি সেখানে ছেড়ে দেওয়া হয়েছে neopythonic.blogspot.com/2008/10/… তবে আমি এখনও এটি পছন্দ করি না
গোরান পেরো

@ ইভান প্লেস: 'সেলফ প্যারামিটারটি পাইথনটিতে কেবল স্পষ্ট যেখানে এটি অন্যান্য ভাষায় অন্তর্নিহিত' গল্পের এটিই একটি অংশ one অন্য অংশটি অজগরটি সাপ্তাহিক টাইপ করা হচ্ছে। একসাথে এটি ভয়ানক, selfসহজেই ভুলে যাওয়া ঘটায় এবং সময় ব্যয় করে।
maaartinus

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

18

জাভা

সময়কাল। দাড়ি. গল্পের শেষে.

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

তারপরে নন-ডিসট্রিমেন্টিক রিসোর্স ম্যানেজমেন্ট রয়েছে। কেওল পাদদেশ!

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

তারপরে বাগটি রয়েছে যে অক্ষর শ্রেণীর শর্টকাটগুলি নন-এসএসআইআই-তে কাজ করে না। কী রাজকীয় যন্ত্রণা! এবং এমনকি ব্যবহার বিবেচনা করবেন না \p{javaWhiteSpace}; এটি বেশ কয়েকটি সাধারণ ইউনিকোড হোয়াইটস্পেস কোড পয়েন্ট সহ সঠিক কাজ করে না।

আপনি কি জানতেন \p{javaJavaIdentifierStart}সম্পত্তি আছে? তারা কী ভাবছেন? তারা খুব স্মরণ করলেন যে তারা এই ধরণের স্মার্ট পীপার্সকে খুব শক্ত করেই পেয়েছিলেন।

কখনও CANON_EQ পতাকা ব্যবহার করার চেষ্টা করেছেন? আপনি কি জানেন যে এটি সত্যই করে এবং এটি কী করে না ? তথাকথিত "ইউনিকোড কেস" সম্পর্কে কীভাবে? প্রচুর সাধারণ কেসিং জিনিসগুলি মোটেই কাজ করে না।

তারপরে তারা রক্ষণাবেক্ষণযোগ্য রেজেক্সগুলি লিখতে শক্ত করে তোলে। জাভা এখনও কীভাবে মাল্টলাইন স্ট্রিং লিখতে পারে তা বুঝতে পারেনি, সুতরাং আপনি এই জাতীয় পাগল জিনিস লিখে শেষ করবেন:

    "(?= ^ [A-Z] [A-Za-z0-9\\-] + $)      \n"
  + "(?! ^ .*                             \n"
  + "    (?: ^     \\d+      $            \n"
  + "      | ^ [A-Z] - [A-Z] $            \n"
  + "      | Invitrogen                   \n"
  + "      | Clontech                     \n"
  + "      | L-L-X-X                      \n"
  + "      | Sarstedt                     \n"
  + "      | Roche                        \n"
  + "      | Beckman                      \n"
  + "      | Bayer                        \n"
  + "    )      # end alternatives        \n"
  + ")          # end negated lookahead   \n" 

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

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

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

OutputStreamWriter(OutputStream out) 
          Creates an OutputStreamWriter that uses the default character encoding.
OutputStreamWriter(OutputStream out, Charset cs) 
          Creates an OutputStreamWriter that uses the given charset.
OutputStreamWriter(OutputStream out, CharsetEncoder enc) 
          Creates an OutputStreamWriter that uses the given charset encoder.
OutputStreamWriter(OutputStream out, String charsetName) 
          Creates an OutputStreamWriter that uses the named charset.

পার্থক্য কি? আপনি কি জানতেন যে আপনার যদি একটি এনকোডিং ত্রুটি থাকে তবে তার মধ্যে কেবলমাত্র একটি ব্যতিক্রম বাড়িয়ে তুলবে? বাকিরা কেবল তাদের বিদ্রূপ করে।

তারপরে জাভা চরগুলির বোকামি একটি চরিত্র ধরে রাখার পক্ষে যথেষ্ট নয়! তারা কী চিন্তা করা হয়? এজন্য আমি তাদেরকে চার্চার বলি। আপনি যদি সঠিকভাবে কাজ করে আশা করেন তবে আপনাকে এ জাতীয় কোড লিখতে হবে:

private static void say_physical(String s) { 
    System.out.print("U+");
    for (int i = 0; i < s.length(); i++) {
        System.out.printf("%X", s.codePointAt(i));
        if (s.codePointAt(i) > Character.MAX_VALUE) { i++; }  // UG!
        if (i+1 < s.length()) { System.out.printf("."); }
    }
}

আর কে কখন তা করতে ভাবছে? কারও পাশে নেই।

কয়টি চরিত্র আছে "\uD83D\uDCA9"? এক বা দুই? আপনি এগুলি কীভাবে গণনা করেন তার উপর নির্ভর করে। অবশ্যই রেজেক্স ইঞ্জিন যৌক্তিক চরিত্রগুলির সাথে কাজ করে, সুতরাং একটি প্যাটার্ন ^.$সফল হবে এবং একটি প্যাটার্ন ^..$ব্যর্থ হবে। এই উন্মাদনা এখানে প্রদর্শিত হয়:

String { U+61, "\u0061", "a" }  =~ /^.$/ => matched.
String { U+61, "\u0061", "a" }  =~ /^..$/ => failed.
String { U+61.61, "\u0061\u0061", "aa" }  =~ /^.$/ => failed.
String { U+61.61, "\u0061\u0061", "aa" }  =~ /^..$/ => matched.
String { U+DF, "\u00DF", "ß" }  =~ /^.$/ => matched.
String { U+DF, "\u00DF", "ß" }  =~ /^..$/ => failed.
String { U+DF.DF, "\u00DF\u00DF", "ßß" }  =~ /^.$/ => failed.
String { U+DF.DF, "\u00DF\u00DF", "ßß" }  =~ /^..$/ => matched.
String { U+3C3, "\u03C3", "σ" }  =~ /^.$/ => matched.
String { U+3C3, "\u03C3", "σ" }  =~ /^..$/ => failed.
String { U+3C3.3C3, "\u03C3\u03C3", "σσ" }  =~ /^.$/ => failed.
String { U+3C3.3C3, "\u03C3\u03C3", "σσ" }  =~ /^..$/ => matched.
String { U+1F4A9, "\uD83D\uDCA9", "💩" }  =~ /^.$/ => matched.
String { U+1F4A9, "\uD83D\uDCA9", "💩" }  =~ /^..$/ => failed.
String { U+1F4A9.1F4A9, "\uD83D\uDCA9\uD83D\uDCA9", "💩💩" }  =~ /^.$/ => failed.
String { U+1F4A9.1F4A9, "\uD83D\uDCA9\uD83D\uDCA9", "💩💩" }  =~ /^..$/ => matched.

এই মূর্খতা সব কারণ আপনি নিখুঁত যুক্তিসঙ্গত লিখতে পারবেন না \u1F4A9, বা আপনি অবশ্যই এটি করতে পারবেন না এমন কোনও সতর্কতা পান না। এটি কেবল ভুল কাজটি করে।

Stoooopid।

আমরা যখন এটিতে এসেছি তখন পুরো \uXXXXস্বরলিপিটি জন্মগতভাবে মস্তিষ্কের মৃত। জাভা প্রিপ্রোসেসর ( হ্যাঁ, আপনি আমাকে শুনেছেন ) জাভা করার আগে এটি পেয়ে যায়, সুতরাং আপনাকে পুরোপুরি যুক্তিসঙ্গত জিনিসগুলি লিখতে নিষেধ করা হবে "\u0022", কারণ জাভা যখন দেখবে তখন এর প্রিপ্রসেসর এটি পরিণত করেছে """, তাই আপনি হেরে যান। ওহ অপেক্ষা করুন, যদি এটি একটি রেজেক্সে না থাকে! সুতরাং আপনি "\\u0022"ঠিক জরিমানা ব্যবহার করতে পারেন ।

Riiiiiiiight!

আপনি কি জানতেন যে জাভাতে কোনও isatty(0)কল করার কোনও উপায় নেই ? এমন ভাবনা ভাবতেও আপনার অনুমতি নেই। এটি আপনার পক্ষে ভাল হবে না।

এবং তারপরে পুরো ক্লাসপাথ ঘৃণা আছে।

বা এই সত্যটি যে আপনার জাভা উত্স ফাইলটির এনকোডিংটি সেই একই উত্স ফাইলে নির্দিষ্ট করার কোনও উপায় নেই যাতে আপনি এটি হারাবেন না? আমি আবারও জানতে চাই: তারা কী ভাবছে ‽‽‽

পাগলামি থামো! আমি বিশ্বাস করতে পারি না মানুষ এই আবর্জনা দিয়েছিল। এটি সম্পূর্ণ রসিকতা। আমি বরং ওয়ালমার্ট গ্রিটার হতে পারছি না তার চেয়ে ভয়াবহ জাভা পাগলামির ঝাঁকুনি এবং তীরগুলি ভোগ করার চেয়ে। এটি সমস্ত ভেঙে গেছে, এবং তারা কেবল এটি ঠিক করতে পারে না, তারা এটিও ঠিক করবে না

এটি একই শিয়াল-গ্রাপি লোক যারা এই ভাষায় নিজেকে অহংকার করে যে কোনও printf()কাজকে এটি বেআইনী করে তুলেছে । জিৎ, নিশ্চিত যে সত্যিকারের ভাল কাজ করেছে, তাই না !?

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

আমরা এটিকে ঘৃণা করি। আমরা চিরকালের জন্য এটি ঘৃণা করি । মরে যেতে দাও মরে !


হাহাহা, ভাল, আমি জাভা স্পর্শ করি না কারণ এটি আপনার বর্ণনার মতো অদৃশ্য। D uD83D হিসাবে ... ভাল আমি মনে করি এটি বলার আরও ভাল উপায় হ'ল আপনি বরং স্ট্রিংগুলি UTF-16 না হয়ে UTF-32 নন। আপনি যদি ইউটিএফ -১--নেস গ্রহণ করেন তবে রেইগেক্স সঠিক কাজটি করবে; এটা। দৈর্ঘ্য কল যে fucks আপ।
রোমান স্টারকভ

4
-1। রেজিএক্সএক্স মন্তব্য এবং ইউনিকোড পালাতে ব্যতীত, আপনি উল্লিখিত জিনিসের একটিও একটি বাক্য গঠন উপাদান নয়।
Jörg W Mittag

3
@ জার্গ, আপনি সিনট্যাক্স চান? ঠিক আছে: জাভা আপনাকে নিয়ন্ত্রণের অক্ষর রাখার অনুমতি দেয়, সনাক্তকারীগুলিতে ESC এবং NUL অন্তর্ভুক্ত করে। তারা কি ভাবছিল ???
tchrist

4
@ ট্রিস্ট: বাহ! আমি যদি আবার কোনও জাভা প্রোগ্রাম লিখি তবে আমার সমস্ত ভেরিয়েবলের বিভিন্ন নাম্বার রয়েছে যা ব্যাকস্পেসের অক্ষরের ( ^H) :)
j_random_hacker

1
@ ট্রিস্ট, এখন ভাল লাগছে?

16

সি এবং সি ++ এ ফাংশন পয়েন্টার ঘোষণার বাক্য গঠন:

(int)(*f)(int, int);

এটি এমন একটি ফাংশন পয়েন্টার হিসাবে ঘোষণা করে fযার পয়েন্টি দু'জন সময় নিতে পারে intএবং একটি ফেরত দিতে পারে int

আমি অনেকটা এর মতো একটি সিনট্যাক্স পছন্দ করি:

f: (int, int) => int

বলুন যে আপনি এমন একটি ফাংশন পয়েন্টার ঘোষণা করতে চান gযার পয়েন্টি দু'বার intএবং একটি ফাংশন থেকে intএবং সেখান থেকে নিতে intপারে intএবং ফিরে আসতে পারে int

সি বা সি ++ স্বরলিপি সহ, আপনি এটিকে এটি হিসাবে ঘোষণা করবেন:

(int)(*g)(int, int, int(int, int));

উপরের প্রস্তাবিত স্বরলিপি সহ একই জিনিস হিসাবে ঘোষণা করা যেতে পারে:

g: (int, int, (int, int) => int) => int

ল্যাটার অনেক বেশি স্বজ্ঞাত আইএমও IM


পাশে: ওওসি নামক প্রোগ্রামিং ল্যাঙ্গুয়েজটি এই সিনট্যাক্সটিকে (এবং সি এবং সি ++ এর বিভিন্ন অন্যান্য সিন্ট্যাক্টিকাল ইস্যুগুলিকে) ঠিক করে দেয়। এর হোমপেজটি এখানে দেখুন


সম্মত হন, কিছু "সরল সি" / "সি ++" এটি সমর্থন করে না, বা বিভিন্ন বাক্য গঠন সহ এটি সমর্থন করে না। একটি বিশেষ বাক্য গঠন, যখন প্রোগ্রামিং ভাষার বৈশিষ্ট্যটি সমর্থিত হয় তা নির্দেশ করতে সহায়তা করে। এজন্য সি # যুক্ত করেছেন "প্রতিনিধি" সিনট্যাক্স।
ulpcat

প্রতিনিধিরা কেবল সিনট্যাকটিক চিনিই নয় কারণ তারা
বস্তুটিও

14

জাভাতে ভার্বোসিটি।

অর্থাৎ,

public static final int 

6
তুলনা করা? (15 অক্ষর)
TheLQ

7
তুলনায়: const intউদাহরণস্বরূপ।
অস্কারলাইজ

11
"পাবলিক স্ট্যাটিক ফাইনাল ইনট এক্স = 4;" হাস্কেলের "x = 4" এর সাথে তুলনা করুন।
জারেড আপডেটে

24
এটি ভারবোসিটি নয়। জাভা a+(b*c)/d*e+f/g^20ব্যবহার করে লেখার চেষ্টা করুন BigInteger। এই ভাষাটি অপারেটরকে ওভারলোডিংয়ের অনুমতি দেয় না কেন?
মেক

4
@ মিশেল: প্রোগ্রামার যাদের এই ব্যয়ে নিজের থেকে সুরক্ষিত করা দরকার তারা প্রোগ্রামিং না করে নিজেরাই সর্বোত্তমভাবে রক্ষা করতে পারেন (এবং সবার জন্য ব্যথা হ্রাস করতে পারেন): ডি।
এমএকে

12

PH আমরা পিএইচপি-তে আমাদের \ পার্সার নেমস্পেস সিনট্যাক্সটিকে \ ঠিক করতে। চাই না

সিনট্যাক্সটি কেবল কুরুচিপূর্ণ নয়, এটি বিভ্রান্তির দিকে নিয়ে যায় যখন নতুন বিকাশকারীদের স্ট্রিংগুলিতে নেমস্পেসগুলি নিয়ে ভাবতে হয়। (পিএইচপি এইচপ সিকোয়েন্স হিসাবে ডাবল-কোটেড স্ট্রিংগুলিতে ব্যাকস্ল্যাশগুলিকে বিভক্ত করে \you\should\never\do\thata


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

একমত। পিএইচপি-র জন্য নেমস্পেসগুলির প্রয়োজন, তবে সেই বাক্য
গঠনটি

9

আমি এই সত্যকে ঘৃণা করি যে বিবৃতি দেওয়ার জন্য / যখন / পরে কোঁকড়ানো বন্ধনীগুলি alচ্ছিক হতে পারে।

বিশেষত যখন আমি কোডটি দেখতে পাই,

if (...)
    for(...)
        ... One line of stuff ...

দয়া করে কেবল ধনুর্বন্ধনী রাখুন এবং এটি দিয়ে সম্পন্ন করুন।


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

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

2
আমার নিয়ম: কেবলমাত্র যদি একটি বিবৃতিতে একাধিক সাবস্টেটমেন্টের প্রয়োজন হয় বা যদি এর মধ্যে একটি বিবৃতি থাকে তবে এটি বন্ধনীগুলিতে আবৃত করা উচিত। সুতরাং যথাযথ ইনডেন্টেশন সহ অবশ্যই আরও for (...) while (...) if (...) { x(); y(); }ভালভাবে পুনরায় লিখিত হয় for (...) { while (...) { if (...) { x(); y(); } } }
জন পুরী

6
আমি বরং বিপরীত - আমি এমন লোকদের ঘৃণা করি যারা যখন সম্পূর্ণ অপ্রয়োজনীয় হয় তখন তারা ধনুর্বন্ধনী লাগানোর বিষয়ে জোর দেয়। শুধু প্রোগ্রাম শিখুন।
জেরি কফিন

3
বিবৃতিতে আমি এককভাবে বন্ধনীগুলি পছন্দ করি। এটি আমাকে একটি প্রোগ্রামের প্রবাহকে আরও ভালভাবে অনুসরণ করতে সহায়তা করে।
রিকার্ডো সান্টোস

9

ভিবিএস স্ক্রিপ্টের লজিকাল অপারেটর নেই

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

If Blah = True Then Print "True!" Else Print "False!"

এবং

If Blah Then Print "True!" Else Print "False!"

ভিবিএস স্ক্রিপ্টে একই নয়!

এমনকি খারাপ, যদিও, এর মানে হল তাই VB স্ক্রিপ্ট কোন শর্ট সার্কিট মূল্যায়ন যে নিম্নোক্ত বিবৃতি হবে যে বিপর্যস্ত যদি আপনার প্রোগ্রাম Blahহয়Nothing

If (Not Blah Is Nothing) And (Blah.Frob = 123) Then
...

এটা ঠিক, ভিবিএস স্ক্রিপ্ট ও তুলনার উভয় অংশকেই মূল্যায়ন করবে , প্রথমটি মিথ্যা হলেও! শুধু যে ডুবে যেতে ...


3
যেদিন আপনি কোনও বাগের মধ্যে একটি বাগ শিকার করেছেন If x Then ... If Not x Then ... End If ... End Ifএবং এক্সটি 2 এর সন্ধান করেছেন, আপনি সত্যই ভিবি / ভিবিএস স্ক্রিপ্টে প্রোগ্রাম করেন নি।
Configurator

7

সম্পাদনা: মন্তব্যগুলিতে আলোচনার পরে আমি নিজের উত্তরটি আরও ভালভাবে ব্যাখ্যা করার জন্য এই উত্তরটি আপডেট করার সিদ্ধান্ত নিয়েছি।

ফাংশন পয়েন্টারগুলিকে সি তে যেভাবে দেখায় আমি তা সত্যিই ঘৃণা করি সাধারণত সাধারণত কোনও পরিবর্তনশীল ঘোষণার টুপলের মতো লাগে: type varname; অন্যদিকে ফাংশন পয়েন্টার ঘোষণাগুলি ফাংশনের নামের আগে * এর সাথে ফাংশনের ঘোষণার মতো দেখতে। আমি এটি একটি পয়েন্টার ধরণের বর্ণনা হিসাবে গ্রহণ করতে পারি, তবে সিতে এটি এই ধরণের পরিবর্তকের নাম এবং প্রকার উভয়ই ঘোষণা করে decla এটি আমার কাছে অসঙ্গত বলে মনে হচ্ছে কারণ প্রকারের ঘোষণাগুলি অন্যথায় চলক ঘোষণার থেকে পৃথক। struct myStruct{int X; int Y;}শুধুমাত্র একটি প্রকারের সংজ্ঞা দেয়, এটি নামের একটি ভেরিয়েবল সংজ্ঞায়িত করে না myStruct। একইভাবে আমি ফাংশন পয়েন্টারগুলিতে টাইপ ডিক্লেয়ারেশন এবং ভেরিয়েবল ডিক্লেয়ারেশনগুলিকে একটি পারমাণবিক বিবৃতিতে বিভক্ত করার কোনও কারণ দেখতে পাই না , বা type varname;কাঠামো থেকে বিচ্যুতির প্রশংসা করি না ।

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


1
এটি বাকী ভাষার সাথে সামঞ্জস্যপূর্ণ, তাই সম্ভবত আপনার গ্রিপ সাধারণভাবে সি ডিক্লেটারের বাক্য গঠন সম্পর্কে? আপনি কি গো-তে ব্যবহৃত সিনট্যাক্স পছন্দ করেন ?
ফিনিউ

কোন উপায়ে সামঞ্জস্য? সাধারণত এটি যায়: টাইপ করুন বর্ণ; এবং যখন আমরা একটি নতুন যৌগিক ধরণের তৈরি করি, যেমন একটি কাঠামোর মতো, প্রথমে ঘোষণা আসে, সম্ভবত কোনও টাইপিডেফ দিয়ে এবং তারপরে আমরা সেই ধরণের একটি ভেরিয়েবল তৈরি করি। যখন আমরা কোনও ফাংশন পয়েন্টার ঘোষণা করি, এটি int (* foo) (int arg1, int arg2), যা তখন কোনও ফাংশনে পাস হওয়া আর্গুমেন্টের ধরণ হিসাবে ব্যবহৃত হয়: অকার্যকর newFoo (int (* foo) (int arg1, int art2) )) .... এবং ভেরিয়েবল হিসাবে: foo = a_comp موافق_func; আমি মনে করি যে প্রথমে কোনও ফাংশন ঘোষণা এবং তারপরে একটি ভেরার ডিক্লেয়ারেশন আরও সুসংগত হবে যেমন: টাইপডেফ ইনট (* ফু) (ইনট, ইনট) মাইফু; মাইফু মাইফু;
অ্যাপসিলনভেক্টর

এজন্য আপনি পেয়েছেন typedef
জিনাক করুন

4
@ এপসিলনভেেক্টর: আমি একমত হতে চাই যে ফাংশন পয়েন্টার সিনট্যাক্সটি বাজে, তবে এটি অনুসরণ করার একটি সহজ নিয়ম রয়েছে যা এটি পড়া সহজ করে তোলে। ঘড়ির কাঁটার সর্পিল নিয়ম (সম্ভবত আপনি এটি দেখেছেন?): C-faq.com/decl/spiral.anderson.html
গ্রেফ্যাড

1
এপসিলনভেেক্টর: আমি নিশ্চিত নই যে আপনি পয়েন্টার ভেরিয়েবলের ঘোষণার মাধ্যমে ভেরিয়েবলের নাম বাদে অন্য ঘোষণার জন্য কী আশা করতেন ।

6

ভিবিএস স্ক্রিপ্টে সেমিকোলন - বা এর অভাব

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


4
এটি আপ-ভোটিং, কারণ আমি বিশেষত সেমিকোলন পছন্দ করি না, তবে ভিবি লাইব্রেকসকে এত অসুবিধাজনক করে তোলে বলে লম্বা লাইনগুলিকে যেভাবে উত্সাহ দেয় তা আমি সত্যিই ঘৃণা করি ।
Shog9

6

আউট / আর্গুমেন্ট। আমি আর্গুমেন্টের জন্য সবই আছি (ভাল জিনিস আমিই আছি), আর্গুমেন্টগুলিও খুব ভাল, তবে একটি যুক্তি যা এই দুটি রাজ্যে পৌঁছে দিতে হবে তা আমাকে বিস্মৃত করে।

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


আপনার কোন ভাষা মনে আছে? যদি সি # হয় তবে আমি অসন্তুষ্ট হয়ে যাব যে এটি বিরক্তিকর কারণ এটি সর্বদা সুস্পষ্ট (সি ++ এর থেকে পৃথক Also) এছাড়াও আমি মূলধারার কোনও ভাষাও জানি না যেখানে আপনার আর্গুমেন্টগুলি আউট / আউট হিসাবে ঘোষণা করতে বাধ্য হয়।
ফিনউইউ

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

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

রেফারেন্স দ্বারা পাস করা @ ফিঞ্জ আইটেমগুলি ( classসি # তে থাকা বস্তুর উদাহরণগুলির মতো ) কোনও ফাংশন দ্বারা সংশোধিত হওয়া আমার পক্ষে ভাল। একপাশে আমি অ ধ্রুবক structs মধ্যে অপছন্দ, একটি ক্ষণস্থায়ী যে structসঙ্গে refঠিক আছে আপডেট করার জন্য, খুব শব্দ। আউটপুট দিয়ে ইনপুট ওভাররাইট করা হয় তখন আমি যা ঘৃণা করি তা হ'ল । আমি সবচেয়ে ভাল উদাহরণটি মনে করতে পারি বার্কলে সকেটের acceptকার্যকারিতা: এটির জন্য একটি socklen_t*যুক্তি প্রয়োজন যা ইনপুটটিতে অবশ্যই struct sockaddr*আপনার পাস করা আকারটি ধারণ করতে পারে ; এবং আউটপুট এ, এতে লেখা হয়েছে এমন বাইটের সংখ্যা থাকবে। এটি অপরাধী হওয়া উচিত।
জিনাক

আমি সম্মত হই যে খারাপ (আইআইআরসি কিছু উইন 32 আই / ও ফাংশনগুলি একই কাজ করে) তবে এটি বৈশিষ্ট্যটির অপব্যবহার (ফাংশন কলটি কেবল তার মান নয়, পাস-ইন ভেরিয়েবলটির অর্থ পরিবর্তন করে) এবং এর অর্থ বৈশিষ্ট্যটি নয় নিজেই খারাপ
ফিনউইউ

6

সি এবং সি ++ এ অ্যারে ঘোষণা।

সাধারণত, একটি চলক ঘোষণা বিন্যাসের হয় type variable_name। আপনি এই ঘোষণাগুলি সহজেই বাম-থেকে-ডান পদ্ধতিতে পড়তে পারেন। কিন্তু int foo[size]প্রথমে সৌন্দর্য এটা প্রকাশক মত fooকোন int হিসাবে, এবং তারপর আপনি আরও পড়তে এবং দেখতে যে foo বিন্যাস ধরনের "-এর পূর্ণসংখ্যার অ্যারের।" int[size] fooআরও ভাল পড়া।

প্রোগ্রামাররা যখন অনুরূপ কারণে এই জাতীয় পয়েন্টার ঘোষণা করে: আমি এটি ঘৃণা করি int *foo। কিছু কারণে আমি বুঝতে পারি না, এটি এটি সাধারণভাবে লেখা হয়েছে।


1
পয়েন্টার ঘোষণাগুলি পুনরায় করুন: এগুলি এ জাতীয় কারণেই লেখা হয়েছে কারণ ' ' ভেরিয়েবল নামের সাথে বাঁধে, প্রকারের নয়। সুতরাং int* a, b;* ঘোষণা করে নাa এবং bনির্দেশক হিসাবে; শুধুমাত্র aহয়। সুতরাং এটি হিসাবে এটি লিখতে ভাল int *a, b;(বা দুটি ঘোষণা হিসাবে এগুলি আরও ভাল লিখুন)।
স্টিভ মেলানিকফ

ভাল যুক্তি. এটি খুব খারাপ *টাইপের সাথে আবদ্ধ হয় না।
জ্যাকব

2
এবং এই ফাংশন পয়েন্টার কিছুই বলা হয় ... void(int) *f;? নাপ:void (*f)(int);
নোট করুন - একটি নাম ভাবুন

আধুনিক সি ++ তে পয়েন্টার এবং অ্যারেগুলির খুব কম প্রয়োজন।
ফ্রেডওভারফ্লো

2
@ স্টিভ মেলানিকফ: যদিও আমি এই উত্তরটি +1 করেছি, তবে আমি মনে করি যে int* a, b;বিষয়টি আপনি উল্লেখ করেছেন তা অনেক বেশি মারাত্মক।
j_random_hacker

5

জাভা মধ্যে অপ্রয়োজনীয় পরামিতি:

HashMap<String,HashMap<String,String>> foo = new HashMap<String, HashMap<String, String>>();

কম্পাইলার অন্য কোন ধরণের প্যারামিটারাইজেশন হতে পারে বলে মনে করে foo ?


4
আমি আশা করি আপনি জাভা (সীমাবদ্ধ) টাইপ অনুকরণ সম্পর্কে সচেতন? HashMap<String,HashMap<String,String>> foo = Maps.newHashMap();
ফাইনাল

1
জাভা 7:HashMap<String,HashMap<String,String>> foo = new HashMap<>();
বার্ট ভ্যান হিউকেলোম

5
আচ্ছা এটা কোন প্রকার এটা চায়, ধরনের যাহাই হউক না কেন মুছে ফেলা হয় থাকতে পারে ...
Configurator

টাইপ অনুমানের অভাব, মানে?
মিসিংফ্যাক্টর

What other type parameterization does the compiler think foo could have?- যে কোনও কারণেই এটি কাঁচা প্রকারের বিষয় হিসাবে বোঝায় - যেন কোনও জ্ঞানী এমনকি কাঁচা এবং প্যারামাইট্রাইজড ধরণের মিশ্রণ করে।
maaartinus

5

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

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

A = B = 0;

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

সুতরাং, বি যদি 0 হয়, তবে এ 1 হবে 1 অন্যথায়, এ 0 হয়। অন্য কথায়, এ এবং বি একই মান নির্ধারণের পরিবর্তে এটি নিশ্চিত করে যে A এর বি এর সমান মান থাকতে পারে না ens

নীচের লাইন: যদিও সি / সি ++ / পিএইচপি শৈলীটি প্রাথমিকভাবে ব্যথার মতো মনে হচ্ছে, বিকল্পটি আরও খারাপ 1

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


1
এমনকি আমি ==সমতা এবং :=অ্যাসাইনমেন্টের জন্য ব্যবহার করার প্রস্তাব দিই । এইভাবে আপনার আরও টাইপ =করতে হবে তবে একাকী এড়ানো বাগগুলি এড়াতে সহায়তা করে।
মার্টিনাস

@ মার্টিনাস: কমপক্ষে আমার কাছে এটাই সবচেয়ে খারাপ সম্ভাবনার মতো শোনাচ্ছে তবে জীবন এমন ...
জেরি কফিন ২ '

3

পার্ল

  1. আমি পার্ল আমাকে লিখতে চান if($x < 10) do_something();। এই মুহুর্তে, আপনাকে এটি লিখতে হবে হিসাবে হয় do_something() if($x < 10);বা হিসাবে হিসাবে if($x < 10) { do_something(); }

9
do_something() if ($x < 10);যে খারাপ না।
জিনাক

এটি নয় এবং অনেক ক্ষেত্রে if(..) ...বুট করার চেয়ে পরিষ্কার পরিচ্ছন্ন , কারণ আপনি সমস্ত অভিব্যক্তি ডানদিকে লাইন করতে পারেন। তবে এমন অনেক সময় আছে যা আমি বলতে চাই if($x < 10) do_something();, এবং এটি দুর্ভাগ্যজনক যে পার্ল আমাকে ছাড়তে দেবে না।
গৌরব

7
আপনার লেখা না আসা অবধি দুর্ভাগ্য if ($x<10) do_something(); and_call_me(); এবং তারপরে আপনি কেন কখনও কল পান না তা ভাবছেন। আমি চাই সি এবং পরিবারের এই ধরণের ত্রুটি রোধ করার জন্য ধনুর্বন্ধনী প্রয়োজন require
এশেলি

2
@ শ্যাশলি: বা আপনি কেন সবসময় কল পাবেন, আসলে।
জিনাক করুন

1
@ জ্নাক কোন elseএস ব্যতীত (আমি আশা করি এটি EXPR1 if COND else EXPR2পাইথনের মতো রয়েছে)
মিং-টাং

3

reinterpret_cast<unsigned long>সি ++ এ। এই অপারেশনটি বিদেশী এপিআইগুলির সাথে ডিল করার এবং সংখ্যাগত নির্ভুলতা নিশ্চিত করতে দরকারী, টাইপ করার মতো ব্যথা হওয়া এবং এত্ত চেহারা দেখতে কেন এত খারাপ হওয়া উচিত?


17
এটি আপনাকে স্মরণ করিয়ে দেওয়ার কুৎসিত যে আপনার কোডটি লেখার চেষ্টা করা উচিত যা এর প্রয়োজন হয় না। :)
গ্রেফ্যাড

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

5
এটি আসলে কোনও তাত্ত্বিক সিএস যুক্তি নয়: reinterpret_castসি ++ এ ব্যবহার করা খুব শক্ত কোডের গন্ধ। 99% সময়, যখন আপনি এটি ব্যবহার করতে চলেছেন, সম্ভাবনা রয়েছে, আপনার প্রয়োজন হবে না - আপনি সম্ভবত কিছু ভুল করেছিলেন। অন্যান্য সময় 1%, আপনি সি এর সাথে ইন্টারফেস করছেন reinterpret_castযখন অন্যথায় না করতে পারে তখন কিছু কাজ করার জন্য টাইপ সিস্টেমটি ব্রেক করে। এটি সাধারণত একটি খারাপ জিনিস।
গ্রেফ্যাড

3

জন্য ... মধ্যে জাভাস্ক্রিপ্ট মধ্যে কনস্ট্রাক্ট এবং foreach পিএইচপি কনস্ট্রাক্ট যখন অ্যারে উপর লুপিং। উভয়ই সঠিক কোডের চেয়ে বাগ লিখতে সহজ করে তোলে।


3
বাহ, এ রকম বাজে কথা। "সঠিক কোডের চেয়ে"। চলে যাও.
জোনাথন স্টার্লিং

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

পরিবর্তনসমূহের রেফারেন্স (এবং অপারেটর) সহ
ভবিষ্যতবাণী

1
আমি বিভ্রান্ত হয়ে পড়েছি, আমি ভেবেছিলাম এটা সাধারণ জ্ঞান ছিল যে জাভাস্ক্রিপ্টে "ফর..ইন" রচনাটি ভেঙে গেছে ... কেন এই আপত্তিজনক?
lvilnis

2

সি / সি ++ এ অ্যারে বা পয়েন্টারের অ্যারেগুলির পয়েন্টার। এগুলি নিয়ে আমি এখনও বিভ্রান্ত।


3
প্রকারটি পিছনের দিকে পড়ুন। int[]*পূর্ণসংখ্যার অ্যারের একটি পয়েন্টার এবং int*[]এটি পূর্ণসংখ্যার পয়েন্টারের একটি অ্যারে। এটির সাথেও ভাল কাজ constকরে: int* constপূর্ণসংখ্যার জন্য একটি ধ্রুবক পয়েন্টার, const int*এবং int const*ধ্রুবক পূর্ণসংখ্যার (অথবা পূর্ণসংখ্যার ধ্রুবকগুলিতে) পয়েন্টার হয়।
জিনাক

@ জ্নাক: "ডান থেকে বাম" কাজ করে না, উল্লিখিত " ক্লকওয়াইজ সর্পিল" / "ভিতরে আউট" নিয়ম দেখুন।

অথবা, কেবল টাইডিফেস ব্যবহার করুন এবং কোনও বিভ্রান্তি নেই।
বিলি ওনিল

আধুনিক সি ++ তে পয়েন্টার এবং অ্যারেগুলির খুব কম প্রয়োজন।
ফ্রেডওভারফ্লো

4
@ ক্রিশ্চর: সত্য নয়। 10 ints এর অ্যারে পয়েন্টার হিসাবে int (*p)[10];ঘোষণা p। যদি sizeof (int) == 4, তবে 40 এর মধ্যে p++অগ্রসর হবেp
j_random_hacker


1

জাভাস্ক্রিপ্ট / জাভা ইত্যাদি তুলনা সমান, উদাহরণস্বরূপ যদি (a == 1)

(A = 1) আমি কতবার লিখি?

একজন মানুষ হিসাবে আমি পুরোপুরি পড়েছি। তবে ডার্ন ইন্টারপ্রেটার / সংকলক বলে, "আরে আমি 1 এ 1 প্রদান করব, তারপরে একটি 1 এর সমান কিনা তা পরীক্ষা করে দেখুন এবং আপনি কি এটি বিশ্বাস করেন হ্যাঁ!

আমাকে দেয়াল চালায়।

যদি (a == 1) খুব কম পঠনযোগ্য হয়, এবং দোভাষী / সংকলকটি যাহাই হউক না কেন আমি কী বোঝাতে চাইছি; অন্যান্য অনেক কম ভাষা (ভিবি) শত শত বছর ধরে এটি সফলভাবে কাজ করে চলেছে।


কি if (a = true)বলতে চাচ্ছি অনুমিত?
টম হাটিন -

2
অ্যাসাইনমেন্ট কেবল একটি মান ফেরত দেওয়া উচিত নয়। এটি কখনও কখনও দরকারী, তবে বেশিরভাগ ক্ষেত্রে এটি ঘাড়ের ব্যথা মাত্র।
কনফিগারকারী

জাভাস্ক্রিপ্টে জেএসলিন্ট আপনার জন্য এটি ধরবে।
জাচারি কে

সমস্যাটি হচ্ছে, শর্তে অ্যাসাইনমেন্ট কার্যকর হতে পারে। আমি <<< যখন (উপাদান = তালিকা-> পরবর্তী ()) <<< বেশ সুস্পষ্ট। সুতরাং আমি নিশ্চিত না যে আমি এটি মুছে ফেলতে চাই।
ইনকা

3
@ টম: এর অর্থ আপনি বুলেটিয়ান বুঝতে পারছেন না। যদি আপনি বোঝাতে চান if (a == true), শুধু লিখুন if (a)। যদি আপনি বোঝাতে চান a = true, তবে ifবিবৃতিটি অপ্রয়োজনীয়।
dan04

1

জাভা বেনামে ক্লাসে ভার্বোসিটি। আশা করি শীঘ্রই স্থির করা হবে।


আপনি একাধিক পদ্ধতি না চাইলে।
টম হাটিন - ২:27

0

structPointer->memberসি / সি ++ এ। অন্য কারও কোড পড়ার জন্য ভাল হতে পারে তবে আমি এটি পছন্দ করি না। একজনের পরিবর্তে দুটি চরিত্র ... কী জায়গার অপচয়!


2
দুর্ভাগ্যক্রমে, এটি অবশ্যই পৃথক করা উচিত ., যা একটি অ-পয়েন্টার অবজেক্টের সদস্যদের জন্য প্রযোজ্য। অস্পষ্ট সংশ্লেষ খারাপ, মিম্মকে?
গ্রেফ্যাড

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

5
@ মেসন: এমন কিসের ক্ষেত্রে কী আছে shared_ptr, যেখানে ->থাকা ধরণের ধরণের .অ্যাক্সেস করে এবং shared_ptrনিজের বৈশিষ্ট্য অ্যাক্সেস করে? আমি দুঃখিত, তবে আমি এখানে পুরোপুরি একমত নই।
বিলি ওনিল

2
আরও খারাপ হতে পারত. পিএইচপি হতে পারে, যেখানে কোনও কিছুর-> সদস্যদের অ্যাক্সেস করতে আপনাকে ব্যবহার করতে হবে ।
কারসন মায়ার্স

1
@ মাআর্টিনাস: যে কোনও কোড যা ভারীভাবে প্রকাশের অপ্রত্যাশিত ক্রমের উপর নির্ভর করে কোডটি আমি কোড লিখছি না।
বিলি ওনিল

0

বন্ধনীগুলিতে বহু-লাইন কোড স্কেল করুন

এই ক্ষেত্রে:

class Foo(
         val bar: String,
         val baz: Int,
         val bing: String,
         val bong: Boolean
 ) extends Model {
   // body here
 }

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


আমি বিভ্রান্ত - আপনি কি প্রথম বন্ধনী ( val barএবং তাই) এর অংশ বা কোঁকড়ানো ধনুর্বন্ধনী এর অংশের অংশ (নিম্নলিখিত অংশ extends Model) বলতে চান? (এই
কোডটিতে

3
বন্ধনীগুলির অংশ। আমি ইংরাজী। আমরা তাদের বন্ধনী হিসাবে অভিহিত করি, জঘন্য, কারণ সেই পরিস্থিতিতে তারা পিতৃতান্ত্রিক ভূমিকা পালন করে না।
টম মরিস

2
এইভাবে ইন্টেন্ট করলে এটি এত খারাপ লাগে না: পেস্টবিন.
com

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

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