Formatted Version of C# Code
This page contains some Badly Formatted C# code, and its C# Formatted version. The output was produced by our C# Formatter.
Badly Formatted C# Code
This code is a sample taken from the C# graphics library. The original was was well formatted; we have edited the code to simulate formatting choices over time by a number of programmers with uneven aesthetics. Most programmers will have to reformat this code before they would be willing to work on it. There goes half an hour of productivity.
/* * BSD Licence: * Copyright (c) 2001, Lloyd Dupont (lloyd@galador.net) ** All rights reserved. * * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of the nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. */ using antlr; using antlr.collections; using System; using System.Collections; using System.Globalization; using System.IO ; using System.Text; public class GLType { public string typeName; public int stars; public GLType(string GLType ) { typeName = GetCSType (GLType); } /** return the generation specific level of this type. * roughly equal to the number of polymorphic type * it could have. <br> * <b>Note</b> a return type has a maximum of 3 level, anyway. */ public int Level { get { if(stars == 0) return 1; if(stars==1 && typeName == "void") return 10; return 3; } } public bool IsVoid { get { return stars== 0 && typeName == "void"; } } /** return the C# representation of a type for a given level. * @param isReturn tell wether or not it is a return argument as * the representation are different * @param codeFriendly to generate a compilable name for CFunction * name. */ public string ToString(int level, bool isReturn, bool codeFriendly) { if(stars==0) return typeName; if(level==0) // C - name return typeName+StarString (codeFriendly ? 'P' : '*'); if(stars>1 || isReturn || level==1) return "IntPtr"; if(typeName=="void") switch(level) { case 2: return "byte[]"; case 3: return "sbyte[]"; case 4: return "short[]"; case 5: return "ushort[]"; case 6: return "int[]"; case 7: return "uint[]"; case 8: return "float[]"; case 9: return "double[]"; } return typeName+"[]"; } string StarString(char c) { StringBuilder sb = new StringBuilder(); for(int i=0; i<stars; i++) sb.Append(c); return sb.ToString(); } public bool IsPointer { get { return stars>0; } } public int Size { get { switch(typeName) { case "void": return 0; case "byte": case "sbyte": return 1; case "short": case "ushort": return 2; case "int": case "uint": return 4; case "float": return 4; case "double": return 8; default: throw new ArgumentException("unknown base type"); } } } static Hashtable typeTable; public static string GetCSType(string GLType) { if(typeTable == null) typeTable = createTypeTable(); string ret = (string) typeTable[GLType]; if(ret == null) { Console.Error.WriteLine("warning: unknown type \""+GLType+"\" use as is."); typeTable[GLType] = GLType; ret = GLType; } return ret; } static Hashtable createTypeTable() { Hashtable ret = new Hashtable(); ret ["void"] = "void"; ret[ "GLvoid"] = "void"; ret["GLenum" ] = "uint"; ret["GLbyte"] = "byte"; ret["GLshort"] = "short";ret["GLint"] = "int"; ret["GLsizei"] = "int"; ret["GLubyte"] = "byte"; ret["GLuint"] = "uint"; ret["GLfloat"] = "float"; ret["GLushort"] = "ushort"; ret["GLclampf"] = "float"; ret["GLdouble"] = "double"; ret["GLclampd"] = "double"; ret["GLboolean"] = "byte"; ret["GLbitfield"] = "uint"; return ret; } }
C# Formatted Version
This is the result of using SD's C# Formatter tool on the sample badly formatted C#, using just the default settings. You can see that the formatter has chosen very different line breaks, based on the language structure. The block structure is now clearly visible. A programmer might actually be able to work on this version.
/* * BSD Licence: * Copyright (c) 2001, Lloyd Dupont (lloyd@galador.net) ** All rights reserved. * * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of the nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. */ using antlr; using antlr.collections; using System; using System.Collections; using System.Globalization; using System.IO; using System.Text; public class GLType { public string typeName; public int stars; public GLType(string GLType) { typeName = GetCSType(GLType); } /** return the generation specific level of this type. * roughly equal to the number of polymorphic type * it could have. <br> * <b>Note</b> a return type has a maximum of 3 level, anyway. */ public int Level { get { if (stars == 0) return 1; if (stars == 1 && typeName == "void") return 10; return 3; } } public bool IsVoid { get { return stars == 0 && typeName == "void"; } } /** return the C# representation of a type for a given level. * @param isReturn tell wether or not it is a return argument as * the representation are different * @param codeFriendly to generate a compilable name for CFunction * name. */ public string ToString(int level, bool isReturn, bool codeFriendly) { if (stars == 0) return typeName; if (level == 0) // C - name return typeName+StarString(codeFriendly ? 'P' : '*'); if (stars > 1 || isReturn || level == 1) return "IntPtr"; if (typeName == "void") switch (level) { case 2 : return "byte[]"; case 3 : return "sbyte[]"; case 4 : return "short[]"; case 5 : return "ushort[]"; case 6 : return "int[]"; case 7 : return "uint[]"; case 8 : return "float[]"; case 9 : return "double[]"; } return typeName+"[]"; } string StarString(char c) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < stars; i++ ) sb.Append(c); return sb.ToString(); } public bool IsPointer { get { return stars > 0; } } public int Size { get { switch (typeName) { case "void" : return 0; case "byte" : case "sbyte" : return 1; case "short" : case "ushort" : return 2; case "int" : case "uint" : return 4; case "float" : return 4; case "double" : return 8; default : throw new ArgumentException("unknown base type"); } } } static Hashtable typeTable; public static string GetCSType(string GLType) { if (typeTable == null) typeTable = createTypeTable(); string ret = (string)typeTable[GLType]; if (ret == null) { Console.Error.WriteLine("warning: unknown type \""+GLType+"\" use as is."); typeTable[GLType] = GLType; ret = GLType; } return ret; } static Hashtable createTypeTable() { Hashtable ret = new Hashtable(); ret["void"] = "void"; ret["GLvoid"] = "void"; ret["GLenum"] = "uint"; ret["GLbyte"] = "byte"; ret["GLshort"] = "short"; ret["GLint"] = "int"; ret["GLsizei"] = "int"; ret["GLubyte"] = "byte"; ret["GLuint"] = "uint"; ret["GLfloat"] = "float"; ret["GLushort"] = "ushort"; ret["GLclampf"] = "float"; ret["GLdouble"] = "double"; ret["GLclampd"] = "double"; ret["GLboolean"] = "byte"; ret["GLbitfield"] = "uint"; return ret; } }
Copyright © 1995-2008 Semantic Designs, Incorporated
DMS and "Design Maintenance System" are registered trademarks of Semantic Designs, Inc.
The SD logo and "Semantic Designs" are registered service marks of Semantic Designs, Inc.
CloneDR, PARLANSE and Thicket are trademarks of Semantic Designs, Inc.
The OMG logo is a registered trademark of the Object Management Group, Inc. in the United States and other countries.
To view our Privacy Policy, click here
Comments or problems: webmaster@semdesigns.com
