2009-04-10 9 views
17

प्रत्येक प्रोग्रामर थोड़ी देर के बाद उपयोगिता कक्षाओं के एक सेट के साथ समाप्त होता है। उनमें से कुछ सच प्रोग्रामिंग मोती हैं और इन्हें आपकी कई परियोजनाओं में पुन: उपयोग किया जाता है। उदाहरण के लिए, जावा में:आपकी सबसे अधिक पुन: उपयोग की जाने वाली कक्षा क्या है?

class Separator { 

     private String separator; 
     private boolean called; 

     public Separator(String aSeparator) { 
      separator = aSeparator; 
      called = false; 
     } 

     @Override 
     public String toString() { 
      if (!called) { 
       called = true; 
       return ""; 
      } else { 
       return separator; 
      } 
     } 
    } 

और:

public class JoinHelper { 

    public static <T> String join(T... elements) { 
     return joinArray(" ", elements); 
    } 

    public static <T> String join(String separator, T... elements) { 
     return joinArray(separator, elements); 
    } 

    private static <T> String joinArray(String sep, T[] elements) { 
     StringBuilder stringBuilder = new StringBuilder(); 
     Separator separator = new Separator(sep); 

     for (T element : elements) { 
      stringBuilder.append(separator).append(element); 
     } 

     return stringBuilder.toString(); 
    } 
} 

क्या अपने सबसे पुन: उपयोग किया वर्ग है?

+2

मेक (मैं समानांतर कार्यक्रमों के बहुत सारे बारे में) कृपया इस समुदाय विकी। अन्यथा, आप बंद होने का जोखिम उठाते हैं। – Randolpho

+2

क्या आप अपाचे के कॉमन्स-लैंग से स्ट्रिंगयूटिल # शामिल नहीं हो सकते? –

+0

जो संभवतः "होमग्रो" उपयोगिता वर्ग – dfa

उत्तर

4

एक उपयोगिता वर्ग लॉगिंग और ईमेल कार्यक्षमता है के साथ काम करने के बाद से लगभग 2 दर्जन से अधिक परियोजनाओं में सरल फ़ाइल पुन: उपयोग किया है। एक विस्तार वर्ग जिसमें एक्सटेंशन विधियां हैं। एक रिपोर्टिंग वर्ग कि मूल रूप से रिपोर्टिंग सेवाओं वेब सेवा का दोहन और यह आसान एक्सेल, पीडीएफ, आदि के रूप में रिपोर्ट स्ट्रीम करने के लिए बनाता है

उदाहरण ...
1.) उपयोगिता क्लास (स्थिर)

public static void LogError(Exception ex) 
    { 
     EventLog log = new EventLog(); 
     if (ex != null) 
     { 
      log.Source = ConfigurationManager.AppSettings["EventLog"].ToString(); 
      StringBuilder sErrorMessage = new StringBuilder(); 
      if (HttpContext.Current.Request != null && HttpContext.Current.Request.Url != null) 
      { 
       sErrorMessage.Append(HttpContext.Current.Request.Url.ToString() + System.Environment.NewLine); 
      } 
      sErrorMessage.Append(ex.ToString()); 
      log.WriteEntry(sErrorMessage.ToString(), EventLogEntryType.Error); 
     } 
    } 

2.) एक्सटेंशन कक्षा

public static IEnumerable<TSource> WhereIf<TSource>(this IEnumerable<TSource> source, bool condition, Func<TSource, bool> predicate) 
    { 
     if (condition) 
      return source.Where(predicate); 
     else 
      return source; 
    } 
1

लॉगर क्लास: लॉग फ़ाइल में नियंत्रण के प्रवाह को कौन सा लॉग करता है।

11

System.Object - लगभग सभी मेरे प्रकार इसे बढ़ाते हैं।

1

विन्यास रीडर/सेटर: जो आरं/xml फ़ाइल से विन्यास पढ़ता है और आवेदन

1

का वातावरण सेट अधिकांश पुन: उपयोग किया? हममम ...

बढ़ावा :: shared_ptr <> बढ़ावा :: weak_ptr <>

शायद सबसे पुन: उपयोग के साथ (भी शायद सबसे टकरा के लिए हिरन अनुपात)

1

वैश्विक

बस एक स्थिर डीबीसीओएनस्ट्रिंग के साथ सरल वर्ग, और कुछ अन्य ऐप चौड़े सेटिंग्स।

नेट

3

अधिकांश पुन: उपयोग किया लेकिन उबाऊ:

public static void handleException(Exception e) throws RuntimeException { 
    if (e instanceof RuntimeException) { 
     throw (RuntimeException) e; 
    } 

    throw new RuntimeException(e); //NOPMD 
} 

कम उबाऊ (भी इमारत सूचियों और सेट के लिए विधि):

/** 
    * Builds a Map that is based on the Bean List. 
    * 
    * @param items Bean List items 
    * @param keyField Bean Field that will be key of Map elements (not null) 
    * @return a Map that is based on the Bean List 
    */ 
    @SuppressWarnings("unchecked") 
    public static <T, K> Map<K, T> buildMapFromCollection(final Collection<T> items, 
                 boolean linkedMap, 
                 final String keyField, 
                 final Class<K> keyType) { 
    if (items == null) { 
     return Collections.emptyMap(); 
    } 

    if (keyField == null) { 
     throw new IllegalArgumentException("KeyField is null"); 
    } 

    final Map<K, T> result; 

    if (linkedMap) { 
     result = new LinkedHashMap<K, T>(); 
    } else { 
     result = new HashMap<K, T>(); 
    } 

    BeanMapper mapper = null; 
    for (final T item : items) { 
     if (mapper == null) { 
     mapper = new BeanMapper(item.getClass()); 
     } 
     final K key = (K) mapper.getFieldValue(item, keyField); 
     result.put(key, item); 
    } 
    return result; 
    } 
+1

का एक एक्सपेल है, आपको इसका नाम बदलना चाहिए नॉटहैंडल एक्सेप्शन (...) :) –

+0

या केवल गुवा थ्रोबल्स – takacsot

1

एक ConcurrentDictionary मैंने लिखा है, जो मैं अब हर जगह उपयोग करने के लिए लग रहे हैं

+0

का उपयोग करें और यह कहां है? – nawfal

+1

यह यहां है: http://concurrent.codeplex.com/ मैंने लिखा है कि * बहुत * बहुत समय पहले और मुझे नहीं पता कि यह कितना अच्छा है। – Martin

3
public static short getLastDayOfMonth(short givenMonth, short givenYear) 
{ 
    short lastDay = 31; 
    switch (givenMonth) 
    { 
     case 4: 
     case 6: 
     case 9: 
     case 11: 
      lastDay = 30; 
      break; 
     case 2: 
      if ((int)givenYear % 4 == 0) 
      { 
       lastDay = 29; 
      } 
      else 
      { 
       lastDay = 28; 
      } 
      break;  
    } 
    return lastDay; 
} 
+5

बहुत बुरा यह छोटी है। http://www.dataip.co.uk/Reference/LeapYear.php आपका एल्गोरिदम 2 9 00 के लिए 2 9 लौटाएगा, जब यह 28 होना चाहिए। जोडा समय या ऐसा कुछ क्यों नहीं उपयोग करें? – I82Much

संबंधित मुद्दे

 संबंधित मुद्दे