你最常用的课程是什么?

时间:2009-04-10 15:43:28

标签: language-agnostic oop

每个程序员在一段时间后都会得到一组实用程序类。其中一些是真正的编程珍珠,它们在你的几个项目中被重用。例如,在java:

 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();
    }
}

什么是您的最常用的课程?

9 个答案:

答案 0 :(得分:11)

System.Object - 我的几乎所有类型都扩展了它。

答案 1 :(得分:4)

具有日志记录和电子邮件功能的实用程序类。包含扩展方法的扩展类。一个报告类,基本上可以利用报告服务Web服务,并可以轻松地将报告流式传输为excel,pdf等。

<强>示例...
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;
    }

答案 2 :(得分: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;
  }

答案 3 :(得分: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;
}

答案 4 :(得分:1)

记录器类:记录日志文件中的控制流。

答案 5 :(得分:1)

配置读取器/设置器:从ini / xml文件读取配置并设置应用程序的环境

答案 6 :(得分:1)

最重用?嗯...

升压:: shared_ptr的&LT;&GT;使用boost :: weak_ptr&lt;&gt;

可能是最重复使用的(也可能是最具爆炸性的比率)

答案 7 :(得分:1)

全局

只是一个带有静态DBConnString的简单类,以及一些其他应用程序范围的设置。

自从使用.Net

以来,已在大约24个项目中重用了这个简单文件

答案 8 :(得分:1)

我写的一个ConcurrentDictionary,我现在似乎随处可见(我写了很多并行程序)