CSharpFeeds - All your C# feeds in one place.

Sponsors

Friday, June 15, 2007

The problem with intellisense

by ericgu via Eric Gunnerson's Compendium : CSharp on 6/15/2007 8:58:00 PM

Today I was working with some sample code, and I came across a misspelling. Not a big deal - there was a field that was named "m_postion" rather than "m_position".

But that got me thinking...

In the past, that sort of thing wouldn't have happened. You would have written:

int m_postion;

but then, when you wrote your code, you would have written:

m_position = 5;

and the compiler would have complained. But with intellisense, you now just pick whatever looks right in the popup list, and the mistakes stay around a bit longer.

So, I wrote a bit of code to help with this - it reflects over an assembly, and produces a list of words.

 

 

using System;
using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;
using System.Reflection;

namespace IdentifierExtract
{
    class GetIdentifiers
    {
        Dictionary m_identifiers = new Dictionary();

        public GetIdentifiers()
        {
        }

        public void Process(string assemblyFilename)
        {
            Assembly assembly = Assembly.LoadFrom(assemblyFilename);

            foreach (Type type in assembly.GetTypes())
            {
                ProcessType(type);
            }
        }

        void ProcessType(Type type)
        {
            BreakIntoWordsAndAdd(type.Name);

            foreach (MemberInfo memberInfo in type.GetMembers(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static))
            {
                BreakIntoWordsAndAdd(memberInfo.Name);

                MethodBase methodBase = memberInfo as MethodBase;

                if (methodBase != null)
                {
                    foreach (ParameterInfo parameterInfo in methodBase.GetParameters())
                    {
                        BreakIntoWordsAndAdd(parameterInfo.Name);
                    }
                }
            }
        }

        void BreakIntoWordsAndAdd(string identifier)
        {
            List words = BreakPascalCasing(identifier);

            foreach (string word in words)
            {
                AddIdentifer(word);
            }
        }

        List BreakPascalCasing(string identifier)
        {
            Regex regex = new Regex(".[a-z]+");
            
            MatchCollection matches = regex.Matches(identifier);

            List words = new List();
            foreach (Match match in matches)
            {
                words.Add(match.Value);
            }

            return words;
        }

        private void AddIdentifer(string name)
        {
            name = name.ToLower();
            if (!m_identifiers.ContainsKey(name))
            {
                m_identifiers.Add(name, null);
            }
        }

        public void WriteToConsole()
        {
            List identifiers = new List(m_identifiers.Keys);
            identifiers.Sort();

            foreach (string identifier in identifiers)
            {
                Console.WriteLine(identifier);
            }
        }
    }
}
email it!bookmark it!digg it!

Original Post: The problem with intellisense

Subscribe

New Feed

Product Spotlight

Recently Updated Sources

Legal Note

The content of the postings is owned by the respective author. CSharpFeeds is not responsible for the contents of the postings. This site is automatically generated and cannot be reviewed for abusive content. If you find abusive content on CSharpFeeds, please contact us. Designated trademarks and brands are the property of their respective owners. All rights reserved.

Advertise with us