JavaRush /جاوا بلاگ /Random-SD /ھدايت ڪرڻ لاء عام پروگرامنگ انداز
pandaFromMinsk
سطح
Минск

ھدايت ڪرڻ لاء عام پروگرامنگ انداز

گروپ ۾ شايع ٿيل
هي مضمون تعليمي ڪورس جو حصو آهي ”اڃانڊ جاوا. مواد "ترقي يافته" عنوانن تي مشتمل آهي جهڙوڪ اعتراض جي تخليق، مقابلو، سيريلائيزيشن، عکاسي، وغيره. ڪورس توهان کي سيکاريندو ته ڪيئن موثر طريقي سان جاوا ٽيڪنڪ کي ماهر ڪجي. تفصيل هتي .
مواد
1. تعارف 2. ويريئبل اسڪوپ 3. ڪلاس فيلڊز ۽ لوڪل ويريئبلز 4. ميٿڊ آرگيومينٽس ۽ لوڪل ويريئبلز 5. باڪسنگ ۽ انباڪسنگ 6. انٽرفيس 7. اسٽرنگز 8. نالونگ ڪنوينشن 9. معياري لائبريريون 10. بي ترتيبي 11. اڳيون 12. ٽيسٽنگ. .. 13. ڊائون لوڊ سورس ڪوڊ
1. تعارف
سبق جي هن حصي ۾ اسان جاوا ۾ سٺي پروگرامنگ انداز ۽ جوابي ڊيزائن جي عام اصولن تي بحث جاري رکنداسين. اسان اڳ ۾ ئي انهن اصولن مان ڪجهه گائيڊ جي پوئين بابن ۾ ڏسي چڪا آهيون، پر جاوا ڊولپر جي صلاحيتن کي بهتر بڻائڻ جي مقصد سان ڪيترائي عملي طريقا ڏنا ويندا.
2. متغير دائرو
ڀاڱو ٽيون ("ڪيئن ڪجي ڪلاسز ۽ انٽرفيسز") ۾ اسان بحث ڪيو ته ڪلاسز ۽ انٽرفيسز جي ميمبرن لاءِ visibility ۽ accessibility ڪيئن لاڳو ٿي سگهي ٿي، دائري جي پابندين جي ڪري. تنهن هوندي، اسان اڃا تائين بحث نه ڪيو آهي مقامي متغير جيڪي طريقا لاڳو ڪرڻ ۾ استعمال ڪيا ويا آهن. جاوا ٻولي ۾، هر مقامي متغير، هڪ ڀيرو اعلان ڪيو ويو آهي، هڪ گنجائش آهي. هي متغير ان جاءِ کان ظاهر ٿئي ٿو جتي اهو اعلان ڪيو ويو آهي ان نقطي تي جتي طريقي جي عمل (يا ڪوڊ جو بلاڪ) مڪمل ٿئي ٿو. عام طور تي، پيروي ڪرڻ جو واحد قاعدو اهو آهي ته هڪ مقامي متغير کي ممڪن طور تي ان جڳهه جي ويجهو بيان ڪيو وڃي جتي اهو استعمال ڪيو ويندو. اچو ته هڪ عام مثال تي نظر وجهان: for( final Locale locale: Locale.getAvailableLocales() ) { // блок codeа } try( final InputStream in = new FileInputStream( "file.txt" ) ) { // блока codeа } ٻنهي ڪوڊ جي ٽڪڙن ۾، متغيرن جو دائرو صرف ايگزيڪيوشن بلاڪن تائين محدود هوندو آهي جتي اهي متغير بيان ڪيا ويندا آهن. جڏهن بلاڪ مڪمل ٿئي ٿو، دائرو ختم ٿي ويندو آهي ۽ متغير پوشيده ٿي ويندو آهي. اهو صاف لڳي ٿو، پر جاوا 8 جي آزاد ٿيڻ ۽ ليمبڊاس جي تعارف سان، مقامي متغير استعمال ڪندي ٻوليءَ جا ڪيترائي مشهور محاورا ختم ٿي رهيا آهن. مون کي پوئين مثال مان هڪ مثال ڏيان ٿو لوپ جي بدران lambdas استعمال ڪندي: Arrays.stream( Locale.getAvailableLocales() ).forEach( ( locale ) -> { // блок codeа } ); توهان ڏسي سگهو ٿا ته لوڪل variable فعل لاءِ هڪ دليل بڻجي ويو آهي، جنهن جي نتيجي ۾ forEach ميٿڊ کي دليل طور منظور ڪيو ويو آهي .
3. ڪلاس جا شعبا ۽ مقامي متغير
جاوا ۾ هر طريقو هڪ مخصوص طبقي سان تعلق رکي ٿو (يا، Java8 جي صورت ۾، هڪ انٽرفيس جتي طريقو ڊفالٽ طريقو قرار ڏنو ويو آهي). مقامي متغيرن جي وچ ۾ جيڪي هڪ طبقي جا شعبا آهن يا عمل ۾ استعمال ٿيل طريقا آهن، اتي نالو تڪرار جو امڪان آهي. جاوا ڪمپلر ڄاڻي ٿو ته ڪيئن صحيح متغير کي دستياب مان چونڊيو، جيتوڻيڪ هڪ کان وڌيڪ ڊولپر ان متغير کي استعمال ڪرڻ جو ارادو رکي ٿو. جديد جاوا IDEs ڊولپر کي ٻڌائڻ جو هڪ وڏو ڪم ڪن ٿا جڏهن اهڙيون تڪرار ٿيڻ وارا آهن، گڏ ڪرڻ وارن وارننگن ۽ متغير نمايان ڪرڻ جي ذريعي. پر اهو اڃا به بهتر آهي ته ڪوڊ لکڻ دوران اهڙين شين بابت سوچڻ. مان هڪ مثال ڏسڻ جي صلاح ڏيان ٿو: public class LocalVariableAndClassMember { private long value; public long calculateValue( final long initial ) { long value = initial; value *= 10; value += value; return value; } } مثال تمام سولو نظر اچي ٿو، پر اهو هڪ پيچرو آهي. calculateValue طريقو هڪ مقامي متغير قيمت متعارف ڪرايو آهي ۽، ان تي ڪم ڪندي، ساڳئي نالي سان ڪلاس فيلڊ کي لڪائيندو آهي. لڪير کي value += value; ڪلاس فيلڊ ۽ مقامي متغير جي قيمت جو مجموعو هجڻ گهرجي، پر ان جي بدران، ٻيو ڪجهه ڪيو پيو وڃي. هڪ مناسب عمل هن طرح نظر ايندو (هن لفظ کي استعمال ڪندي): public class LocalVariableAndClassMember { private long value; public long calculateValue( final long initial ) { long value = initial; value *= 10; value += this.value; return value; } } جڏهن ته هي مثال ڪجهه طريقن سان ناياب آهي، اهو هڪ اهم نقطو ظاهر ڪري ٿو ته ڪجهه حالتن ۾ ان کي ڊيبگ ۽ درست ڪرڻ ۾ ڪلاڪ لڳن ٿا.
4. طريقو دليل ۽ مقامي متغير
هڪ ٻيو نقصان جيڪو ناتجربيڪار جاوا ڊولپر اڪثر ڪري پوي ٿو طريقو دليلن کي مقامي متغير طور استعمال ڪري رهيو آهي. جاوا توهان کي غير مستقل دليلن کي قدرن کي ٻيهر تفويض ڪرڻ جي اجازت ڏئي ٿو (جڏهن ته، اهو اصل قدر تي ڪو به اثر نه آهي): public String sanitize( String str ) { if( !str.isEmpty() ) { str = str.trim(); } str = str.toLowerCase(); return str; } مٿي ڏنل ڪوڊ اسنپٽ خوبصورت نه آهي، پر اهو مسئلو کي ظاهر ڪرڻ لاء سٺو ڪم ڪري ٿو: str تفويض ڪيو ويو آهي مختلف قدر (۽ بنيادي طور تي مقامي متغير طور استعمال ڪيو ويندو آهي). سڀني حالتن ۾ (بغير ڪنهن به استثناء جي)، توهان هن مثال کان سواء ڪري سگهو ٿا ۽ ڪرڻ گهرجي (مثال طور، دليلن کي مستقل طور بيان ڪندي). مثال طور: public String sanitize( final String str ) { String sanitized = str; if( !str.isEmpty() ) { sanitized = str.trim(); } sanitized = sanitized.toLowerCase(); return sanitized; } هن سادي قاعدي تي عمل ڪندي، ڏنل ڪوڊ کي ڳولڻ ۽ مسئلي جو ذريعو ڳولڻ آسان آهي، جيتوڻيڪ مقامي متغير متعارف ڪرائڻ دوران.
5. Packing ۽ unpacking
باڪسنگ ۽ انباڪسنگ هڪ ٽيڪنڪ جو نالو آهي جيڪو جاوا ۾ استعمال ڪيو ويندو آهي بنيادي قسم ( int, long, double, etc. ) کي لاڳاپيل قسم جي ريپرز ( Integer, Long, Double , etc.) ۾ تبديل ڪرڻ لاءِ. حصو 4 ۾ ڪيئن ۽ ڪڏھن استعمال ڪجي Generics ٽيوٽوريل، توھان اڳ ۾ ئي اھو عمل ۾ ڏٺو آھي جڏھن مون ڳالھ ڪئي ھئي عمدي قسمن کي لفافي ڪرڻ بابت جنريڪس جي ٽائيپ پيراميٽر جي طور تي. جيتوڻيڪ جاوا ڪمپلر آٽو باڪسنگ ذريعي اهڙين تبديلين کي لڪائڻ جي پوري ڪوشش ڪندو آهي، پر ڪڏهن ڪڏهن اهو توقع کان گهٽ هوندو آهي ۽ اڻڄاتل نتيجا پيدا ڪندو آهي. اچو ته هڪ مثال ڏسو: public static void calculate( final long value ) { // блок codeа } final Long value = null; calculate( value ); مٿي ڏنل ڪوڊ جو ٽڪرو ٺيڪ ٺهڪي ٿو. بهرحال، اهو هڪ NullPointerException ان لڪير تي اڇلائي ڇڏيندو // блок جتي اهو لانگ ۽ long جي وچ ۾ تبديل ٿي رهيو آهي . اهڙي صورت ۾ صلاح ڏني وئي آهي ته اهو استعمال ڪرڻ جي صلاح ڏني وئي آهي ابتدائي قسمون (جڏهن ته، اسان اڳ ۾ ئي ڄاڻون ٿا ته اهو هميشه ممڪن ناهي).
6. انٽرفيس
سبق جي ڀاڱي 3 ۾، "ڪلاسسز ۽ انٽرفيسز کي ڪيئن ڊزائين ڪيو وڃي،" اسان انٽرفيس ۽ ڪانٽريڪٽ پروگرامنگ تي بحث ڪيو، ان ڳالهه تي زور ڏنو ته جڏهن به ممڪن هجي ته ڪنڪريٽ ڪلاسن تي انٽرفيس کي ترجيح ڏني وڃي. هن سيڪشن جو مقصد توهان کي حوصلا افزائي ڪرڻ آهي ته توهان انٽرفيس تي غور ڪرڻ لاءِ پهريون ڀيرو هن کي حقيقي دنيا جي مثالن سان ظاهر ڪندي. انٽرفيس ڪنهن خاص عمل سان جڙيل نه آهن (سواءِ ڊفالٽ طريقن جي). اهي صرف معاهدا آهن ۽، مثال طور، اهي تمام گهڻي آزادي ۽ لچڪ فراهم ڪن ٿا طريقي سان معاهدي تي عمل ڪري سگهجي ٿو. اها لچڪ وڌيڪ اهم ٿي ويندي آهي جڏهن عمل درآمد ۾ خارجي نظام يا خدمتون شامل هجن. اچو ته هڪ سادي انٽرفيس جو هڪ مثال ڏسون ۽ ان تي عمل ڪرڻ ممڪن آهي: public interface TimezoneService { TimeZone getTimeZone( final double lat, final double lon ) throws IOException; } public class TimezoneServiceImpl implements TimezoneService { @Override public TimeZone getTimeZone(final double lat, final double lon) throws IOException { final URL url = new URL( String.format( "http://api.geonames.org/timezone?lat=%.2f&lng=%.2f&username=demo", lat, lon ) ); final HttpURLConnection connection = ( HttpURLConnection )url.openConnection(); connection.setRequestMethod( "GET" ); connection.setConnectTimeout( 1000 ); connection.setReadTimeout( 1000 ); connection.connect(); int status = connection.getResponseCode(); if (status == 200) { // Do something here } return TimeZone.getDefault(); } } مٿي ڏنل ڪوڊ جو ٽڪرو هڪ عام انٽرفيس جو نمونو ۽ ان تي عمل درآمد ڏيکاري ٿو. هي عمل درآمد هڪ خارجي HTTP خدمت استعمال ڪري ٿو ( http://api.geonames.org/ ) مخصوص هنڌ جي ٽائم زون کي ٻيهر حاصل ڪرڻ لاءِ. تنهن هوندي به، ڇاڪاڻ ته معاهدو انٽرفيس تي منحصر هوندو آهي، انٽرفيس جو ٻيو عمل متعارف ڪرائڻ تمام آسان آهي، استعمال ڪندي، مثال طور، هڪ ڊيٽابيس يا هڪ باقاعده فليٽ فائل. انھن سان گڏ، انٽرفيس تمام مددگار آھن ٽيسٽ قابل ڪوڊ ڊزائين ڪرڻ ۾. مثال طور، هر ٽيسٽ تي خارجي خدمتن کي ڪال ڪرڻ هميشه عملي ناهي، تنهن ڪري اهو سمجهه ۾ اچي ٿو ته ان جي بدران هڪ متبادل، آسان ترين عمل درآمد (جهڙوڪ اسٽب): public class TimezoneServiceTestImpl implements TimezoneService { @Override public TimeZone getTimeZone(final double lat, final double lon) throws IOException { return TimeZone.getDefault(); } } هي عمل ڪٿي به استعمال ڪري سگهجي ٿو جتي TimezoneService انٽرفيس گهربل هجي، الڳ ڪري. خارجي اجزاء تي انحصار کان ٽيسٽ اسڪرپٽ. اهڙين انٽرفيس جي اثرائتي استعمال جا ڪيترائي شاندار مثال جاوا معياري لائبريري ۾ سمايل آهن. مجموعا، فهرستون، سيٽون - انهن انٽرفيس ۾ ڪيترائي عمل آهن جيڪي بغير بغير مٽائي سگھجن ٿيون ۽ مٽائي سگھجن ٿيون جڏهن معاهدو فائدو وٺن ٿا. مثال طور: public static< T > void print( final Collection< T > collection ) { for( final T element: collection ) { System.out.println( element ); } } print( new HashSet< Object >( /* ... */ ) ); print( new ArrayList< Integer >( /* ... */ ) ); print( new TreeSet< String >( /* ... */ ) );
7. تارون
اسٽرنگ جاوا ۽ ٻين پروگرامنگ ٻولين ۾ سڀ کان وڌيڪ استعمال ٿيل قسمن مان ھڪڙو آھن. جاوا ٻولي ڪيترن ئي معمولي اسٽرنگ ميپيپليشنز کي آسان بڻائي ٿي ڪنٽينيشن ۽ مقابلي جي عملن کي دٻي جي ٻاهران مدد ڪندي. ان کان علاوه، معياري لائبريري ڪيترن ئي طبقن تي مشتمل آهي جيڪي اسٽرنگ آپريشن کي موثر بڻائيندا آهن. اهو ئي آهي جيڪو اسان هن حصي ۾ بحث ڪرڻ وارا آهيون. جاوا ۾، تار ناقابل بدلائي شيون آهن جيڪي UTF-16 انڪوڊنگ ۾ نمائندگي ڪن ٿيون. هر دفعي جڏهن توهان اسٽرنگ کي ڳنڍيندا آهيو (يا ڪنهن به آپريشن کي انجام ڏيو ٿا جيڪو اصل اسٽرنگ کي تبديل ڪري ٿو)، اسٽرنگ ڪلاس جو هڪ نئون مثال ٺاهيو ويندو آهي . انهي جي ڪري، ڪنٽينشن آپريشن تمام غير موثر ٿي سگهي ٿو، جنهن جي ڪري اسٽرنگ ڪلاس جا ڪيترائي وچولي مثال ٺاهيا وڃن ٿا (عام طور تي گندگي ٺاهڻ). پر جاوا معياري لائبريري ۾ ٻه تمام مفيد طبقا شامل آهن جن جو مقصد اسٽرنگ مينيپوليشن کي آسان بڻائڻ آهي. اهي آهن StringBuilder ۽ StringBuffer (انهن جي وچ ۾ فرق صرف اهو آهي ته StringBuffer ڌاڳو محفوظ آهي جڏهن ته StringBuilder ان جي ابتڙ آهي). اچو ته انهن ڪلاسن مان استعمال ٿيندڙ ڪجھ مثالن تي نظر وجهون: final StringBuilder sb = new StringBuilder(); for( int i = 1; i <= 10; ++i ) { sb.append( " " ); sb.append( i ); } sb.deleteCharAt( 0 ); sb.insert( 0, "[" ); sb.replace( sb.length() - 3, sb.length(), "]" ); جڏهن StringBuilder/StringBuffer استعمال ڪرڻ اسٽرنگ کي ترتيب ڏيڻ جو تجويز ڪيل طريقو آهي، اهو ٻن يا ٽن تارن کي ڳنڍڻ جي آسان ترين منظرنامي ۾ اوورڪل نظر اچي سگهي ٿو، ته جيئن عام اضافو آپريٽر ( ("+")، مثال طور: String userId = "user:" + new Random().nextInt( 100 ); اڪثر ڪري ڪنٽينشن کي آسان ڪرڻ لاءِ بهترين متبادل اسٽرنگ فارميٽنگ کي استعمال ڪرڻ آهي ۽ انهي سان گڏ جاوا اسٽرينڊ لئبريري کي هڪ جامد String.format مددگار طريقو مهيا ڪرڻ ۾ مدد ڏيڻ لاءِ . هي فارميٽ وضاحت ڪندڙن جي هڪ ڀرپور سيٽ کي سپورٽ ڪري ٿو، جنهن ۾ انگ، نشانيون، تاريخ/وقت، وغيره شامل آهن. (مڪمل تفصيلن لاءِ حوالن جي دستاويزن جو حوالو ڏيو) String.format طريقو String.format( "%04d", 1 ); -> 0001 String.format( "%.2f", 12.324234d ); -> 12.32 String.format( "%tR", new Date() ); -> 21:11 String.format( "%tF", new Date() ); -> 2014-11-11 String.format( "%d%%", 12 ); -> 12% مختلف ڊيٽا جي قسمن مان اسٽرنگ ٺاهڻ لاءِ صاف ۽ هلڪو وزن مهيا ڪري ٿو. اهو نوٽ ڪرڻ جي قابل آهي ته جديد جاوا IDEs String.format طريقي سان منظور ٿيل دليلن مان فارميٽ جي وضاحت کي پارس ڪري سگھن ٿا ۽ ڊولپرز کي ڊيڄاريندڙن کي ڊيڄاريندڙن کي ڊيڄاريندڙن کي ڊيڄاريندڙن کي ڄاڻايو وڃي ٿو.
8. نالي جي ڪنوينشن
جاوا هڪ ٻولي آهي جيڪا ڊولپرز کي ڪنهن به نالي جي ڪنوينشن تي سختي سان عمل ڪرڻ تي مجبور نه ڪندي آهي، پر ڪميونٽي هڪ سادي ضابطن جو هڪ سيٽ ٺاهيو آهي جيڪو جاوا ڪوڊ کي معياري لائبريري ۽ ڪنهن ٻئي جاوا پروجيڪٽ ۾ هڪجهڙائي ڏيکاري ٿو:
  • پئڪيج جا نالا ننڍي صورت ۾ آهن: org.junit, com.fasterxml.jackson, javax.json
  • ڪلاس جا نالا، ڳڻپيوڪر، انٽرفيس، تشريحون وڏي خط سان لکيل آهن: StringBuilder، Runnable، @Override
  • فيلڊن يا طريقن جا نالا (جڏهن ته جامد فائنل کان سواء ) اٺن جي نوٽيفڪيشن ۾ بيان ڪيا ويا آهن: isEmpty, format, addAll
  • جامد فائنل فيلڊ يا ڳڻپ جا مستقل نالا اپر ڪيز ۾ آهن، انڊر اسڪور ("_") سان الڳ ٿيل: LOG، MIN_RADIX، INSTANCE.
  • مقامي variables يا طريقن جي دليلن کي ٽائپ ڪيو ويو آهي اٺ جي نوٽيفڪيشن ۾: str, newLength, minimum Capacity
  • generics لاءِ پيٽرول جي قسم جا نالا مٿين صورت ۾ ھڪڙي اکر سان ظاھر ڪيا ويا آھن: T, U, E
انهن سادي ڪنوينشنن تي عمل ڪرڻ سان، توهان جيڪو ڪوڊ لکندو اهو نظر ايندو جامع ۽ ڌار ڌار انداز ۾ ڪنهن ٻئي لائبريري يا فريم ورڪ کان، ۽ محسوس ٿيندو ته اهو هڪ ئي شخص ٺاهيو هو (انهن نادر وقتن مان هڪ جڏهن ڪنوينشن اصل ۾ ڪم ڪن ٿا).
9. معياري لائبريريون
ڪابه پرواه ناهي ته توهان ڪهڙي قسم جي جاوا پروجيڪٽ تي ڪم ڪري رهيا آهيو، جاوا معياري لائبريريون توهان جي بهترين دوست آهن. ها، اهو اختلاف ڪرڻ ڏکيو آهي ته انهن وٽ ڪجهه خراب ڪنڊن ۽ عجيب ڊزائن جا فيصلا آهن، جڏهن ته، 99٪ وقت جو اهو اعلي معيار جو ڪوڊ آهي جيڪو ماهرن طرفان لکيل آهي. اهو ڳولڻ جي قابل آهي. هر جاوا رليز موجوده لائبريرين ۾ ڪيتريون ئي نيون خاصيتون آڻيندو آهي (ڪجهه ممڪن مسئلن سان پراڻن خاصيتن سان)، ۽ ڪيترن ئي نئين لائبريرين کي پڻ شامل ڪري ٿو. Java 5 java.util.concurrent پيڪيج جي حصي جي طور تي هڪ نئين گڏيل لائبريري کڻي آيو . جاوا 6 متعارف ڪرايو (گهٽ سڃاتل) اسڪرپٽنگ سپورٽ ( javax.script پيڪيج) ۽ هڪ جاوا ڪمپلر API (جيئن javax.tools پيڪيج جي حصي جي طور تي ). Java 7 java.util.concurrent ۾ ڪيتريون ئي واڌايون آڻيندي، java.nio.file پيڪيج ۾ نئين I/O لائبريري متعارف ڪرائڻ ۽ java.lang.invoke ۾ متحرڪ ٻولين لاءِ سپورٽ . ۽ نيٺ، Java 8 شامل ڪيو ڊگھي-انتظار واري تاريخ/وقت java.time پيڪيج ۾ . جاوا هڪ پليٽ فارم طور ترقي ڪري رهيو آهي ۽ ان لاءِ تمام ضروري آهي ته مٿين تبديلين سان گڏ ترقي ڪري. جڏهن به توهان غور ڪيو ته ڪنهن ٽئين پارٽي جي لائبريري يا فريم ورڪ کي توهان جي پروجيڪٽ ۾ شامل ڪرڻ، پڪ ڪريو ته گهربل ڪارڪردگي اڳ ۾ ئي معياري جاوا لائبريرين ۾ موجود نه آهي (يقيناً، الورورٿم جا ڪيترائي خاص ۽ اعليٰ ڪارڪردگي وارا عمل آهن جيڪي اڳي ئي آهن. معياري لائبريرين ۾ الگورتھم، پر اڪثر ڪيسن ۾ اهي واقعي گهربل نه آهن).
10. بي ترتيبي
سڄي ھدايت ۽ ھن حصي ۾ تبديلي ھڪ ياد ڏياريندڙ طور رھي ٿي: مھرباني ڪري ان کي سنجيدگيءَ سان وٺو. جيڪڏهن هڪ ڪلاس جيڪو توهان ڊزائين ڪيو آهي يا هڪ طريقو جيڪو توهان لاڳو ڪيو آهي اهو هڪ غير مستحڪم گارنٽي فراهم ڪري سگهي ٿو، اهو اڪثر ڪيسن ۾ هر هنڌ استعمال ڪري سگهجي ٿو بغير هڪ ئي وقت تبديل ٿيڻ جي خوف کان. اهو توهان جي زندگي کي ڊولپر جي حيثيت سان ٺاهيندو (۽ اميد آهي ته توهان جي ٽيم جي ميمبرن جي زندگي) آسان بڻائي ٿي.
11. جاچڻ
جاوا ڪميونٽي ۾ ٽيسٽ-ڊولپمينٽ ڊولپمينٽ (TDD) جو رواج تمام گهڻو مشهور آهي، ڪوڊ جي معيار لاءِ بار وڌائيندي. سڀني فائدن سان گڏ جيڪي TDD مهيا ڪري ٿو، اهو ڏسي افسوس ٿيو ته جاوا معياري لائبريري اڄ ڪنهن به ٽيسٽ فريم ورڪ يا سپورٽ اوزار شامل نه آهي. بهرحال، جاچ جديد جاوا جي ترقيءَ جو هڪ لازمي حصو بڻجي چڪي آهي ۽ هن حصي ۾ اسين JUnit فريم ورڪ کي استعمال ڪندي چند بنيادي طريقن تي نظر وجهنداسين . JUnit ۾، لازمي طور تي، هر امتحان هڪ اعتراض جي متوقع رياست يا رويي بابت بيانن جو هڪ سيٽ آهي. عظيم ٽيسٽ لکڻ جو راز انھن کي سادو ۽ مختصر رکڻ آھي، ھڪ وقت ۾ ھڪڙي شيءِ کي جانچڻ. هڪ مشق جي طور تي، اچو ته ٽيسٽ جو هڪ سيٽ لکون ان جي تصديق ڪرڻ لاءِ ته String.format string سيڪشن مان هڪ فنڪشن آهي جيڪو گهربل نتيجو ڏئي ٿو. package com.javacodegeeks.advanced.generic; import static org.junit.Assert.assertThat; import static org.hamcrest.CoreMatchers.equalTo; import org.junit.Test; public class StringFormatTestCase { @Test public void testNumberFormattingWithLeadingZeros() { final String formatted = String.format( "%04d", 1 ); assertThat( formatted, equalTo( "0001" ) ); } @Test public void testDoubleFormattingWithTwoDecimalPoints() { final String formatted = String.format( "%.2f", 12.324234d ); assertThat( formatted, equalTo( "12.32" ) ); } } ٻئي تجربا ڏاڍا پڙهڻ لائق نظر اچن ٿا ۽ انهن جو عمل مثالي آهي. اڄ، اوسط جاوا پروجيڪٽ ۾ سوين ٽيسٽ ڪيس شامل آهن، ڊولپر کي ريگريشن يا خاصيتن تي ترقي جي عمل دوران تڪڙو موٽ ڏيو.
12. اڳيون
گائيڊ جو هي حصو جاوا ۾ پروگرامنگ جي مشق سان لاڳاپيل بحثن جو هڪ سلسلو مڪمل ڪري ٿو ۽ هن پروگرامنگ ٻولي لاءِ دستياب. ايندڙ ڀيري اسين ٻوليءَ جي خاصيتن ڏانهن موٽنداسين، جاوا جي دنيا کي دريافت ڪندي استثناءَ جي حوالي سان، انهن جا قسم، ڪيئن ۽ ڪڏهن انهن کي استعمال ڪجي.
13. ڊائون لوڊ سورس ڪوڊ
ھي ھڪڙو سبق ھو عام ترقي جي اصولن تي ترقي يافته جاوا ڪورس مان. سبق جو سورس ڪوڊ هتي ڊائون لوڊ ڪري سگھجي ٿو .
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION