Practice Code
Practice Code
This page shows examples of messages formatted using JSON (JavaScript Object
Notation).
{
"glossary": {
"title": "example glossary",
"GlossDiv": {
"title": "S",
"GlossList": {
"GlossEntry": {
"ID": "SGML",
"SortAs": "SGML",
"GlossTerm": "Standard Generalized Markup
Language",
"Acronym": "SGML",
"Abbrev": "ISO 8879:1986",
"GlossDef": {
"para": "A meta-markup language, used to create markup languages
such as DocBook.",
"GlossSeeAlso": ["GML", "XML"]
},
"GlossSee": "markup"
}
}
}
}
}
The same text expressed as XML:
"value": "File",
"popup": {
"menuitem": [
{"value": "New", "onclick": "CreateNewDoc()"},
{"value": "Open", "onclick": "OpenDoc()"},
{"value": "Close", "onclick": "CloseDoc()"}
]
}
}}
The same text expressed as XML:
"image": {
"src": "Images/Sun.png",
"name": "sun1",
"hOffset": 250,
"vOffset": 250,
"alignment": "center"
},
"text": {
"data": "Click Here",
"size": 36,
"style": "bold",
"name": "text1",
"hOffset": 250,
"vOffset": 100,
"alignment": "center",
"onMouseUp": "sun1.opacity = (sun1.opacity / 100) * 90;"
}
}}
The same text expressed as XML:
<widget>
<debug>on</debug>
<window title="Sample Konfabulator Widget">
<name>main_window</name>
<width>500</width>
<height>500</height>
</window>
<image src="Images/Sun.png" name="sun1">
<hOffset>250</hOffset>
<vOffset>250</vOffset>
<alignment>center</alignment>
</image>
<text data="Click Here" size="36" style="bold">
<name>text1</name>
<hOffset>250</hOffset>
<vOffset>100</vOffset>
<alignment>center</alignment>
<onMouseUp>
sun1.opacity = (sun1.opacity / 100) * 90;
</onMouseUp>
</text>
</widget>
{"web-app": {
"servlet": [
{
"servlet-name": "cofaxCDS",
"servlet-class": "org.cofax.cds.CDSServlet",
"init-param": {
"configGlossary:installationAt": "Philadelphia, PA",
"configGlossary:adminEmail": "[email protected]",
"configGlossary:poweredBy": "Cofax",
"configGlossary:poweredByIcon": "/images/cofax.gif",
"configGlossary:staticPath": "/content/static",
"templateProcessorClass": "org.cofax.WysiwygTemplate",
"templateLoaderClass": "org.cofax.FilesTemplateLoader",
"templatePath": "templates",
"templateOverridePath": "",
"defaultListTemplate": "listTemplate.htm",
"defaultFileTemplate": "articleTemplate.htm",
"useJSP": false,
"jspListTemplate": "listTemplate.jsp",
"jspFileTemplate": "articleTemplate.jsp",
"cachePackageTagsTrack": 200,
"cachePackageTagsStore": 200,
"cachePackageTagsRefresh": 60,
"cacheTemplatesTrack": 100,
"cacheTemplatesStore": 50,
"cacheTemplatesRefresh": 15,
"cachePagesTrack": 200,
"cachePagesStore": 100,
"cachePagesRefresh": 10,
"cachePagesDirtyRead": 10,
"searchEngineListTemplate": "forSearchEnginesList.htm",
"searchEngineFileTemplate": "forSearchEngines.htm",
"searchEngineRobotsDb": "WEB-INF/robots.db",
"useDataStore": true,
"dataStoreClass": "org.cofax.SqlDataStore",
"redirectionClass": "org.cofax.SqlRedirection",
"dataStoreName": "cofax",
"dataStoreDriver": "com.microsoft.jdbc.sqlserver.SQLServerDriver",
"dataStoreUrl":
"jdbc:microsoft:sqlserver://LOCALHOST:1433;DatabaseName=goon",
"dataStoreUser": "sa",
"dataStorePassword": "dataStoreTestQuery",
"dataStoreTestQuery": "SET NOCOUNT ON;select test='test';",
"dataStoreLogFile": "/usr/local/tomcat/logs/datastore.log",
"dataStoreInitConns": 10,
"dataStoreMaxConns": 100,
"dataStoreConnUsageLimit": 100,
"dataStoreLogLevel": "debug",
"maxUrlLength": 500}},
{
"servlet-name": "cofaxEmail",
"servlet-class": "org.cofax.cds.EmailServlet",
"init-param": {
"mailHost": "mail1",
"mailHostOverride": "mail2"}},
{
"servlet-name": "cofaxAdmin",
"servlet-class": "org.cofax.cds.AdminServlet"},
{
"servlet-name": "fileServlet",
"servlet-class": "org.cofax.cds.FileServlet"},
{
"servlet-name": "cofaxTools",
"servlet-class": "org.cofax.cms.CofaxToolsServlet",
"init-param": {
"templatePath": "toolstemplates/",
"log": 1,
"logLocation": "/usr/local/tomcat/logs/CofaxTools.log",
"logMaxSize": "",
"dataLog": 1,
"dataLogLocation": "/usr/local/tomcat/logs/dataLog.log",
"dataLogMaxSize": "",
"removePageCache": "/content/admin/remove?cache=pages&id=",
"removeTemplateCache": "/content/admin/remove?cache=templates&id=",
"fileTransferFolder": "/usr/local/tomcat/webapps/content/fileTransferFolder",
"lookInContext": 1,
"adminGroupID": 4,
"betaServer": true}}],
"servlet-mapping": {
"cofaxCDS": "/",
"cofaxEmail": "/cofaxutil/aemail/*",
"cofaxAdmin": "/admin/*",
"fileServlet": "/static/*",
"cofaxTools": "/tools/*"},
"taglib": {
"taglib-uri": "cofax.tld",
"taglib-location": "/WEB-INF/tlds/cofax.tld"}}}
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
"http://java.sun.com/j2ee/dtds/web-app_2.2.dtd">
<web-app>
<servlet>
<servlet-name>
cofaxCDS
</servlet-name>
<servlet-class>
org.cofax.cds.CDSServlet
</servlet-class>
<init-param>
<param-name>configGlossary:installationAt</param-name>
<param-value>Philadelphia, PA</param-value>
</init-param>
<init-param>
<param-name>configGlossary:adminEmail</param-name>
<param-value>[email protected]</param-value>
</init-param>
<init-param>
<param-name>configGlossary:poweredBy</param-name>
<param-value>Cofax</param-value>
</init-param>
<init-param>
<param-name>configGlossary:poweredByIcon</param-name>
<param-value>/images/cofax.gif</param-value>
</init-param>
<init-param>
<param-name>configGlossary:staticPath</param-name>
<param-value>/content/static</param-value>
</init-param>
<init-param>
<param-name>templateProcessorClass</param-name>
<param-value>org.cofax.WysiwygTemplate</param-value>
</init-param>
<init-param>
<param-name>templateLoaderClass</param-name>
<param-value>org.cofax.FilesTemplateLoader</param-value>
</init-param>
<init-param>
<param-name>templatePath</param-name>
<param-value>templates</param-value>
</init-param>
<init-param>
<param-name>templateOverridePath</param-name>
<param-value></param-value>
</init-param>
<init-param>
<param-name>defaultListTemplate</param-name>
<param-value>listTemplate.htm</param-value>
</init-param>
<init-param>
<param-name>defaultFileTemplate</param-name>
<param-value>articleTemplate.htm</param-value>
</init-param>
<init-param>
<param-name>useJSP</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>jspListTemplate</param-name>
<param-value>listTemplate.jsp</param-value>
</init-param>
<init-param>
<param-name>jspFileTemplate</param-name>
<param-value>articleTemplate.jsp</param-value>
</init-param>
<init-param>
<param-name>cachePackageTagsTrack</param-name>
<param-value>200</param-value>
</init-param>
<init-param>
<param-name>cachePackageTagsStore</param-name>
<param-value>200</param-value>
</init-param>
<init-param>
<param-name>cachePackageTagsRefresh</param-name>
<param-value>60</param-value>
</init-param>
<init-param>
<param-name>cacheTemplatesTrack</param-name>
<param-value>100</param-value>
</init-param>
<init-param>
<param-name>cacheTemplatesStore</param-name>
<param-value>50</param-value>
</init-param>
<init-param>
<param-name>cacheTemplatesRefresh</param-name>
<param-value>15</param-value>
</init-param>
<init-param>
<param-name>cachePagesTrack</param-name>
<param-value>200</param-value>
</init-param>
<init-param>
<param-name>cachePagesStore</param-name>
<param-value>100</param-value>
</init-param>
<init-param>
<param-name>cachePagesRefresh</param-name>
<param-value>10</param-value>
</init-param>
<init-param>
<param-name>cachePagesDirtyRead</param-name>
<param-value>10</param-value>
</init-param>
<init-param>
<param-name>searchEngineListTemplate</param-name>
<param-value>forSearchEnginesList.htm</param-value>
</init-param>
<init-param>
<param-name>searchEngineFileTemplate</param-name>
<param-value>forSearchEngines.htm</param-value>
</init-param>
<init-param>
<param-name>searchEngineRobotsDb</param-name>
<param-value>WEB-INF/robots.db</param-value>
</init-param>
<init-param>
<param-name>useDataStore</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>dataStoreClass</param-name>
<param-value>org.cofax.SqlDataStore</param-value>
</init-param>
<init-param>
<param-name>redirectionClass</param-name>
<param-value>org.cofax.SqlRedirection</param-value>
</init-param>
<init-param>
<param-name>dataStoreName</param-name>
<param-value>cofax</param-value>
</init-param>
<init-param>
<param-name>dataStoreDriver</param-name>
<param-value>com.microsoft.jdbc.sqlserver.SQLServerDriver</param-value>
</init-param>
<init-param>
<param-name>dataStoreUrl</param-name>
<paramvalue>jdbc:microsoft:sqlserver://LOCALHOST:1433;DatabaseName=goon</paramvalue>
</init-param>
<init-param>
<param-name>dataStoreUser</param-name>
<param-value>sa</param-value>
</init-param>
<init-param>
<param-name>dataStorePassword</param-name>
<param-value></param-value>
</init-param>
<init-param>
<param-name>dataStoreTestQuery</param-name>
<param-value>SET NOCOUNT ON;select test='test';</param-value>
</init-param>
<init-param>
<param-name>dataStoreLogFile</param-name>
<param-value>/usr/local/tomcat/logs/datastore.log</param-value>
</init-param>
<init-param>
<param-name>dataStoreInitConns</param-name>
<param-value>10</param-value>
</init-param>
<init-param>
<param-name>dataStoreMaxConns</param-name>
<param-value>100</param-value>
</init-param>
<init-param>
<param-name>dataStoreConnUsageLimit</param-name>
<param-value>100</param-value>
</init-param>
<init-param>
<param-name>dataStoreLogLevel</param-name>
<param-value>debug</param-value>
</init-param>
<init-param>
<param-name>maxUrlLength</param-name>
<param-value>500</param-value>
</init-param>
</servlet>
<servlet>
<servlet-name>
cofaxEmail
</servlet-name>
<servlet-class>
org.cofax.cds.EmailServlet
</servlet-class>
<init-param>
<param-name>mailHost</param-name>
<param-value>mail1</param-value>
</init-param>
<init-param>
<param-name>mailHostOverride</param-name>
<param-value>mail2</param-value>
</init-param>
</servlet>
<servlet>
<servlet-name>
cofaxAdmin
</servlet-name>
<servlet-class>
org.cofax.cds.AdminServlet
</servlet-class>
</servlet>
<servlet>
<servlet-name>
fileServlet
</servlet-name>
<servlet-class>
org.cofax.cds.FileServlet
</servlet-class>
</servlet>
<servlet>
<servlet-name>
cofaxTools
</servlet-name>
<servlet-class>
org.cofax.cms.CofaxToolsServlet
</servlet-class>
<init-param>
<param-name>templatePath</param-name>
<param-value>toolstemplates/</param-value>
</init-param>
<init-param>
<param-name>log</param-name>
<param-value>1</param-value>
</init-param>
<init-param>
<param-name>logLocation</param-name>
<param-value>/usr/local/tomcat/logs/CofaxTools.log</param-value>
</init-param>
<init-param>
<param-name>logMaxSize</param-name>
<param-value></param-value>
</init-param>
<init-param>
<param-name>dataLog</param-name>
<param-value>1</param-value>
</init-param>
<init-param>
<param-name>dataLogLocation</param-name>
<param-value>/usr/local/tomcat/logs/dataLog.log</param-value>
</init-param>
<init-param>
<param-name>dataLogMaxSize</param-name>
<param-value></param-value>
</init-param>
<init-param>
<param-name>removePageCache</param-name>
<param-value>/content/admin/remove?cache=pages&id=</param-value>
</init-param>
<init-param>
<param-name>removeTemplateCache</param-name>
<param-value>/content/admin/remove?cache=templates&id=</paramvalue>
</init-param>
<init-param>
<param-name>fileTransferFolder</param-name>
<param-value>/usr/local/tomcat/webapps/content/fileTransferFolder</paramvalue>
</init-param>
<init-param>
<param-name>lookInContext</param-name>
<param-value>1</param-value>
</init-param>
<init-param>
<param-name>adminGroupID</param-name>
<param-value>4</param-value>
</init-param>
<init-param>
<param-name>betaServer</param-name>
<param-value>true</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>
cofaxCDS
</servlet-name>
<url-pattern>
/
</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>
cofaxEmail
</servlet-name>
<url-pattern>
/cofaxutil/aemail/*
</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>
cofaxAdmin
</servlet-name>
<url-pattern>
/admin/*
</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>
fileServlet
</servlet-name>
<url-pattern>
/static/*
</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>
cofaxTools
</servlet-name>
<url-pattern>
/tools/*
</url-pattern>
</servlet-mapping>
<taglib>
<taglib-uri>cofax.tld</taglib-uri>
<taglib-location>/WEB-INF/tlds/cofax.tld</taglib-location>
</taglib>
</web-app>
The action and label values only need to be provided if they are not the same as the
id.
{"menu": {
"header": "SVG Viewer",
"items": [
{"id": "Open"},
{"id": "OpenNew", "label": "Open New"},
null,
{"id": "ZoomIn", "label": "Zoom In"},
{"id": "ZoomOut", "label": "Zoom Out"},
{"id": "OriginalView", "label": "Original View"},
null,
{"id": "Quality"},
{"id": "Pause"},
{"id": "Mute"},
null,
{"id": "Find", "label": "Find..."},
{"id": "FindAgain", "label": "Find Again"},
{"id": "Copy"},
{"id": "CopyAgain", "label": "Copy Again"},
{"id": "CopySVG", "label": "Copy SVG"},
{"id": "ViewSVG", "label": "View SVG"},
{"id": "ViewSource", "label": "View Source"},
{"id": "SaveAs", "label": "Save As"},
null,
{"id": "Help"},
{"id": "About", "label": "About Adobe CVG Viewer..."}
]
}}
The same message expressed as XML:
<menu>
<header>Adobe SVG Viewer</header>
<item action="Open" id="Open">Open</item>
<item action="OpenNew" id="OpenNew">Open New</item>
<separator/>
<item action="ZoomIn" id="ZoomIn">Zoom In</item>
<item action="ZoomOut" id="ZoomOut">Zoom Out</item>
<item action="OriginalView" id="OriginalView">Original View</item>
<separator/>
<item action="Quality" id="Quality">Quality</item>
<item action="Pause" id="Pause">Pause</item>
<item action="Mute" id="Mute">Mute</item>
<separator/>
<item action="Find" id="Find">Find...</item>
<item action="FindAgain" id="FindAgain">Find Again</item>
<item action="Copy" id="Copy">Copy</item>
<item action="CopyAgain" id="CopyAgain">Copy Again</item>
<item action="CopySVG" id="CopySVG">Copy SVG</item>
<item action="ViewSVG" id="ViewSVG">View SVG</item>
<item action="ViewSource" id="ViewSource">View Source</item>
<item action="SaveAs" id="SaveAs">Save As</item>
<separator/>
<item action="Help" id="Help">Help</item>
<item action="About" id="About">About Adobe CVG Viewer...</item>
</menu>
using System;
using System.IO;
using System.Security.Cryptography;
using System.Net.Sockets;
byte[] Key = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x10,
0x11, 0x12, 0x13, 0x14, 0x15, 0x16};
byte[] IV = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x10,
0x11, 0x12, 0x13, 0x14, 0x15, 0x16};
{
//Inform the user that an exception was raised.
Console.WriteLine("The connection failed.");
}
}
}
class ExceptionTest
{
static double SafeDivision(double x, double y)
{
if (y == 0)
throw new System.DivideByZeroException();
return x / y;
}
static void Main()
{
// Input for test purposes. Change the values to see
// exception handling behavior.
double a = 98, b = 0;
double result = 0;
try
{
result = SafeDivision(a, b);
Console.WriteLine("{0} divided by {1} = {2}", a, b, result);
}
catch (DivideByZeroException e)
{
Console.WriteLine("Attempted divide by zero.");
}
}
}
int caseSwitch = 1;
switch (caseSwitch)
{
case 1:
Console.WriteLine("Case 1");
break;
case 2:
Console.WriteLine("Case 2");
break;
default:
Console.WriteLine("Default case");
break;
}
if (i % 3 == 0 && i % 5 == 0)
{
Console.WriteLine("FizzBuzz");
}
else if (i % 3 == 0)
{
Console.WriteLine("Fizz");
}
else if (i % 5 == 0)
{
Console.WriteLine("Buzz");
}
else
{
Console.WriteLine(i);
}
}
}
What do you think? Do we need to make the code better?
Example 2:
{
string output = "";
if (i % 3 == 0) { output = "Fizz"; }
if (i % 5 == 0) { output = output + "Buzz"; }
if (output == "") { output = i.ToString(); }
Console.WriteLine(output);
}
}
What do you think now ? Do we need to make the code even better?
Ok, let me help to make it better. Naming thing is one of the hardest job we have as
a software developer. Because we spend a lot of time naming things, there are so
many things to name properties, methods, classes, files, projects etc. We should
spend some energies for naming things because names can be meanings. Adding
meaning to code is readability all about.
// Avoid
ProductCategory prodCat;
Do not use Underscores in identifiers.
// Avoid
ProductCategory product_Category;
}
Do declare all member variables at the top of a class, with static variables at the
very top.
public Product()
{
// ...
}
}
Do use singular names for enums. Exception: bit field enums.
{
North,
East,
South,
West
}
Do not suffix enum names with Enum.
//avoid
public void Checkout(string shippingName, string shippingCity,
string shippingSate, string shippingZip, string billingName,
string billingCity, string billingSate, string billingZip)
{
}
Hide Copy Code
//DO
public void Checkout(ShippingAddress shippingAddress,BillingAddress
billingAddress)
{
}
We should introduce class instead of all parameters.
{
return false;
}
else if()
{
//.....
}
return true;
Hide Copy Code
//DO
var isValid = true;
if(product.Price>15)
{
isValid= false;
}
else if(product.IsDeleted)
{
isValid= false;
}
else if(!product.IsFeatured)
{
isValid= false;
}
return isValid;
You can imagine 4 exit points scattered around 20- 30 lines of code. That makes you
more harder to understand and see what is happening inside the method and what
will execute and when will execute.
I got too many responses, some agreeing but mostly disagreeing that it was a good
"standard" to enforce. To find out the potentiality I did some unit testing and found
that for complex method that have multiple exit points usually have a set of tests
for each of those paths.
{
// error.
return false
}
// expression
if( !GoodFunction2())
{
//error.
return false;
}
// more expression
return true;
namespace WebApplication1.Controllers
{
public class Customer
{
public string CustomerName { get; set; }
public string Address { get; set; }
}
public class TestController : Controller
{
public Customer GetCustomer()
{
Customer c = new Customer();
c.CustomerName = "Customer 1";
c.Address = "Address1";
return c;
}
}
}
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>MyView</title>
</head>
<body>
return View("MyView");
}
else
{
return View("YourView");
}
}
public int Id
{
get
{
return _Id;
}
set
{
_Id= value;
}
}
set
{
_Amount = value;
}
get
{
return _Amount;
}
}
}
public class CustomerController : Controller
{
…..
….
public ViewResult DisplayCustomer()
{
Customer objCustomer = new Customer();
objCustomer.Id = 12;
objCustomer.CustomerCode = "1001";
objCustomer.Amount = 90.34;
return View("DisplayCustomer",objCustomer);
}
}
{
…..
….
public ViewResult DisplayCustomer()
{
Customer objCustomer = new Customer();
objCustomer.Id = 12;
objCustomer.CustomerCode = "1001";
objCustomer.Amount = 90.34;
return View("DisplayCustomer",objCustomer);
}
}