Enter a convenience function. This is what I call code that wraps several calls to base level functions that can be reused throughout the application. We group similar ones into a static class with a Utils suffix (e.g. StringUtils or XmlUtils).
Here is an example of one that we use:
/// <summary>
/// Convert either a predefined color name or an ARGB value into a Color object.
/// </summary>
/// <param name="colorString">Either a predefined color name or an ARGB number
/// value represented as a string./// <returns>Color
public static Color FromColorString(string colorString) {
// Color will throw an exception if the string is null.
if (string.IsNullOrEmpty(colorString)) return Color.Empty;
// Translate HTML color strings.
if (colorString.StartsWith("#")) {
return ColorTranslator.FromHtml(colorString);
}
// See if the passed in value is a named color string.
Color color = Color.FromName(colorString);
if (color.IsKnownColor) return color;
// If the string is not a named color and not a number return the empty color.
if (!StringUtils.IsInteger(colorString)) return Color.Empty;
// Otherwise convert the string to a number and return a color based on that.
return Color.FromArgb(Convert.ToInt32(colorString));
}
It neatly wraps several ways to create a color object from an HTML string, named color or argb value. Create a bunch of unit tests for this and you have a nice piece of reusable code.
1 comment:
Life Saver
Post a Comment