Подтвердить что ты не робот

Какой ваш многократно используемый класс?

Каждый программист через некоторое время заканчивает набор служебных классов. Некоторые из них являются истинными жемчужинами программирования, и они используются повторно в нескольких ваших проектах. Например, в 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();
    }
}

Что такое ваш самый повторно используемый класс?

4b9b3361

Ответ 1

Класс утилиты, который имеет функции ведения журнала и электронной почты. Класс расширений, содержащий методы расширения. Класс отчетности, который в основном использует веб-службу служб отчетов и позволяет легко обрабатывать отчеты как 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

System.Object - почти все мои типы расширяют его.

Ответ 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;
  }

Ответ 4

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

Logger class: журнал регистрации потока управления в файле журнала.

Ответ 6

Configuration Reader/Setter: считывает конфигурацию из файла ini/xml и устанавливает среду приложения

Ответ 7

В большинстве случаев используется повторно? Хммм...

boost:: shared_ptr < > с boost:: weak_ptr < >

вероятно, наиболее многократно используется (также, вероятно, наибольшее значение коэффициента bang-for-buck)

Ответ 8

Глобалы

Просто простой класс со статическим DBConnString и несколькими другими настройками приложения.

Повторно использовать простой файл примерно в 2 дюжинах проектов, поскольку он работает с .Net

Ответ 9

A ConcurrentDictionary Я написал, что теперь я использую везде (я пишу много параллельных программ)